浅谈C语言中常见的数据类型(初学者向)

数据类型在c语言学习中是最基础内容之一,想要对c进行入门乃至熟练就必须理解及掌握各种数据类型。

首先什么是数据类型,个人的浅显理解是 数据类型是用来存储数据的一个空间,不同的数据类型负责存储不同的数据,例如:

Int a =100;  意为 向系统申请一块内存 命名为a ,定义这个 a 的数据类型是整型int,意味着 a 的空间大小符合int类型 4个字节 32个bit位。

常见的数据类型按大体分类分为 整型:int  浮点型:float  字符型:char 

按细分又有,对于整型:int   short(短整型)  long(长整型) long long(长长整型)'较少用到'

对于浮点型 :float(单精度浮点型)   double(双精度浮点型) long double(长双精度浮点型)

字符型较为特殊:仅有char一种,但其可以引出字符串,char类型也适用于与上述两种不同的情况


首先来看整型:


16位类型    短整型  short  占用2个字节     16个bit位 最大值 32767
32位类型    整型      int      占用4个字节     32个bit位 最大值 2,147483,467
32位/64位 长整型    long   占用4/8个字节  32/64个bit位 最大值 9,223,372,036,854,775,807

关于查看数据类型存储空间的大小可通过 运算符 sizeof( ) 实现如:

结果:


可能会有很多初学者会看到在 整型int 或者浮点型 float  的前面加上 unsigned ; 会看到 如下形式

unsigned int a ; unsigned float b; unsigned char c; 

对于unsigned ——直译为无符号,这意为着 unsigned int 是无符号的整型数据,那么符号有无的概念又如何解释呢 上文提及,int类型占用4个字节,32位bit位,换算到二进制中,就有0-31位 用0或1表示,如:

 

而上图中,最高位(红色圈)即表示为符号位,最高位为 0 则为正 最高位为 1 则为负,由于在 int中最高位只表示正负,不表示数值大小,int类型的大小也如上文所言 

 

而unsigned的价值在于,使有符号位的int 转换为了 无符号的 unsigned  int,这意味着此时的最高位将不是符号位,也无法表示负数,相应的,unsigned int 表示的数值大小也相对大了很多

unsigned 的价值就是在于取消符号位,让原本的 int float char等数据类型占用更大的储存空间。


 浮点型:

float(单精度浮点型)    内存大小4个字节 32位bit位

double(双精度浮点型)内存大小8个字节 64位bit位

 long double(长双精度浮点型) 该类型较为特殊,存储空间取决于系统编译器

浮点型与整型最大的区别就是浮点型面向的对象是带有小数点的数,而整型只是取整数,所以单从精度来看,浮点型要比整型准确不少,但上文也提及,浮点型分为单精度、双精度,显而易见,精度不一样,数值准确度也不一样。

字符类型:

        char 占用一个字节 8个bit位 最大值127

因为char类型存储空间较小,只有1个字节8个bit位,所以除了用char类型表示 比较小的数字外,还用其来表示 符号 字母 等。

具体操作为:

字符 --> 数字 --> 二进制 --> 存储到内存中 (此内容为引用)

我们需要通过 ascii 表查看 数字与字符之间的转换关系

 ascii表

根据表格,我们可以轻易的表示出我们想要输出的字母或字符

以上均是一些概念内容,可能对于初学者来说并不是很好接受,接下来将介绍部分代码


首先是printf()函数,对应头文件为(<stdio.h>)这也许是从事编程工作者接触的第一个函数了

函数具体形式为:printf(“%x”,X% 是函数执行必备的,这是规则,而后面的红色 x ,根据定义数据类型的不同有不同的字母 例如 浮点型%f,短整型 %hd  长整型 %ld等....  大写的蓝色 X ,则是只你定义的存储空间的名称 如图:

整型的各种控制符形式为 int :%d     short:%hd    long:%ld      

浮点型: float:%f double:%lf

字符型char  : 输出数字%hhd;输出符号:%c

 

值得注意的是,int a=xxx;

在“a=xxx”中,左边是变量,右边是常量,定义数据类型时均需要遵从这样的原则,不能左边是常量右边是变量 如“int 100 = a” 这是错误的。Int 后表达式的左边也不能是相加或相减 例如 “int a+b = 100” 或“float = a-b = 100”错误错误。

对于 int a = xxx;是一个赋值的过程 “=”是赋予的意思,不是相等的意思 这里表示

 值xxx赋予a

此外,当int a;没有写a具体被赋予什么值的时候,意为值a为随机值,可在后续代码的编写中任意赋值于a。如图:


而对于浮点型:

上文提及过,浮点型面向带有小数点的数,当我们需要输出浮点型的数时,小数点后的位数该做如何处理呢。

常规的 %f 默认将输出的数保留到小数点后6位, 即 1.324000 或 2.000000;

故当用户需要保存特定位数的小数时,需要进行不一样的操作:

% 作为输出类型格式的开始标记

后面:

f  --> 使用浮点类型数据输出

.m --> m 为一个数字, 代表需要输出小数点后几个位,默认输出6位(存在四舍五入

n.m --> n 表示整个浮点数据所占用的长度, m 表示小数点后几位

12.45678 %10.3f --> 12.457 12.457 需要占用n 个字符 10 个, m则为小数点后几位 当前是3位

而关于 int 和 float,用int类型的数据结构去存储浮点型的数,会自动取整,反之用float去存储整型的数,会在小数点后自动补0;

如下实例

而关于浮点型的精度问题:

结果:


对于字符型char:

上文提及过char类型更多用于参照ascii表进行数字——字符;字符——数字的转换,即

 再次强调,用printf()进行对字符型输出时,输出数字用%hhd;字符用%c 

然而,char类型存储空间较小,只有一个字节的大小,所以多用来存储一个符号或数字,能不能存储多个符号呢?答案是不能的。

结果:

输出结果为空,可见创建单个char类型的变量其实并不是很方便,于是就引入了字符串的概念,但在c语言中并没有字符串这个类型,所以我们无法直接定义 字符串 a 但可以用数组类型的字符型 也就是字符数组来表示字符串。例:

char a[15]——意为用创建一个名为a的char类型数组,其中数组大小为15,这也意味着可以在a中存储15个字符,换个说法,就是a[15],相当于包含了 a1 a2 a3.....a15,可以存储15个字符,如此就可以用字符串存储或输出多个字符  例如:

当然,上文我曾提及 a[15]相当于包含a1-a15,自然也可以对a1-a15各项赋值。


 自此,本文介绍了初学c语言中较为常见的几种数据类型。

初学者需要掌握其基本概念,存储大小,赋值方法,以及灵活运用printf()函数对其进行打印输出,内容不算多或者难,希望初学c的同学能加把劲,坚持下去。之后博主会制作更多更深层的内容,当然,此篇亦是博主第一篇文章,许多地方不够具体全面,原创不易,不喜...想喷就喷吧。

                                                                                                                                                                                                                 以上

                                                                                

                                                                                                                                                                                                    

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值