图片[1]yxqz初识基本数据类型yxqz小余塘

 

作者:余小小

日期:2021-10-02

 

数据类型

数据类型就是用来声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储在内存中占用的空间。

在世界上,有很多的分类,就不说阿三过度的三六九等吧,就简单的人和动物的世界,都有很多的类型

就看动物,比如哺乳类,昆虫类,等等,级别。

所以,在c中,在内存中,想要发挥出更好的作用,更优秀的性能, 那么就好定义好一个数据的类型

  • 基本数据类型/算数类型:数值类型(整数类型,浮点型),字符型char

  • void类型(空类型)void

  • 构造数据类型:数组、结构体、共用体、枚举(后面详细解释)

  • 指针类型(后面详细解释)

在这里插入图片描述

看不明白,放弃吧,所以只能慢慢来了。

如果叫你一下的认识动物世界里的所有动物,你觉得可能吗,就算造物主来了,都可能提起裤子不认人。

基本数据类型

在生活里我们常用的数字有整数和小数。

所以基本数据类型类型又分为了整数类型即整型(当然这里的整型不是韩国的整形)和浮点类型即浮点型;

注意,各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。

整型

数据类型 占用大小
short 短整型 2 字节 取值范围:-32,768 到 32,767
int 整型 【常用】 2或4个字节(一般都占用2个字节) 取值范围:-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
long 长整型 4 字节 取值范围:-2,147,483,648 到 2,147,483,647

其实char也是int类型,在计算机中,字符也是通过对照ACILL表的int数值转换的。

那么简单的总结一下,在c中,最短的是谁?当然是short,最长的是谁?当然是long,见名知意嘛。那么中间的呢,就是int了。

这里扩充一下,在Java语言的四类八种中,有一类也叫做整型,有byte ,short,int,long,这里就占用了四种了,绝吧,在Java里,最短的不是short ,而是byte

那么,在c中有byte么,可以试试看,发现是报错的哦,编译都不通过的。

image-20210927143229680

在c中,如果想要知道一个数据类型占用的内存大小,可以使用sizeof函数

这里补充一个,long long。长长整型,这个很奇怪的名字的数据类型,在c中是存在的

printf("long long:%d\n",sizeof(long long ));

 

%d:整数占位符

long long:占用8个字节,则是两个long类型的长度,记住,long long之间有个空格的

那么好奇的我试了试,有没有三个long,但是并没有。。。

总结一下:

  1. short占用2个字节

  2. int占用4个字节

  3. long占用4个字节

  4. long long 占用8个字节

sizeof

sizeof是C语言的一种单目操作符,sizeof操作符以字节形式给出了其操作数的存储大小。和加减乘除一样,是内置的一个运算符。但是sizeof是带有()括号,所以我喜欢叫他函数,或者说是api,别问为啥,我喜欢这样。

好的,那么就来用用这个sizeof函数。

int main() {
   printf("我爱吃鱼香茄子\n");
   printf("short所占用的长度是:%d\n",sizeof (short ));
   printf("int:%d\n",sizeof (int ));
   printf("long:%d\n",sizeof (long ));
   return 0;
}

 

这里简单的提一句啊,我使用Clion的快捷键是用的eclipse的,ctrl+alt+下,向下复制

输入结果,发现乱码了

image-20210927144131451

设置一下编译器的文件编码就行了,如果使用utf8,则在debug的时候没问题,但是运行就会乱码

所以,使用默认的gbk吧,保证控制台一致gbk就没问题了。这个和mingw有关,就懒得深入mingw了

image-20210927150939373

运行结果:

image-20210927144552066

字符型

在c中,字符型只有一个,叫做char,占用1个字节,这个英文字符的情况下,如果是中文字符,可能是2个字节

数据类型 占用大小
char 字符型【常用】 1字节 取值范围:(-128 到 127 或 0 到 255)

因为-128 到 127 或 0 到 255也在int【-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 】的取值范围之内,所以在小于127大于-128的范围里的时候 int可以和char类型相互转换对应的字符

字符的占用空间,和编码格式有关,所以关于中文的测试, 后面详细解释。

ASCII码中:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。

其他编码的百度即可

在c中,汉字一般都是占用2个字节

使用sizeof运算符测试字符所占用的长度。

需要注意的是,我使用char定义一个中文变量的时候,使用单引号来定义中文字符,会报错的。但是使用双引号就不会了,而且无论中文个数是多少,char占用的空间都是1个字节,但是中文的定义不是这样使用的。

int main() {
   printf("我爱吃鱼香茄子\n");
   printf("short所占用的长度是:%d\n",sizeof(short ));
   printf("int:%d\n",sizeof(int ));
   printf("long:%d\n",sizeof(long ));
   printf("-----------------这是分割线----------------------\n");
   char a1 ='a';
   char a2="我爱吃鱼香茄子";
   printf("char:%d\n",sizeof(char ));
   printf("a1:%d\n",sizeof(a1 ));
   printf("ca2:%d\n",sizeof(a2));
   return 0;
}

 

image-20210927145840061

浮点类型

数据类型 占用大小
float 单精度浮点 【常用】 4 字节 取值范围(1.2E-38 到 3.4E+38 )6 位小数
double 双精度浮点 【常用】 8 字节 取值范围 (2.3E-308 到 1.7E+308 )15 位小数
long double 16 字节 取值范围(3.4E-4932 到 1.1E+4932 )19 位小数

简单总结:

  • float占用4个字节

  • double占用8个字节,

  • long double占用16个字节。

printf("-----------------这是分割线----------------------\n");
   printf("float:%d\n",sizeof(float));
   printf("double:%d\n",sizeof(double ));
   printf("long double:%d\n",sizeof(long double));

 

image-20210927151602142

c语言的占位符

字符是单引号,用c

字符串是双引号,用s

  • %d, %i 代表整数

  • %f 浮点

  • %s 字符串

  • %c char

  • %p 指针

  • %fL 长log

  • %e 科学计数

  • %g 小数或科学计数。

  • %a,%A 读入一个浮点值(仅C99有效)。

  • %c 读入一个字符。

  • %d 读入十进制整数。

  • %i 读入十进制,八进制,十六进制整数。

  • %o 读入八进制整数。

  • %x,%X 读入十六进制整数。

  • %s 读入一个字符串,遇空格、制表符或换行符结束。

  • %f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。

  • %p 读入一个指针。

  • %u 读入一个无符号十进制整数。

  • %n 至此已读入值的等价字符数。

  • %[] 扫描字符集合。

  • %% 读 % 符号

文章版权声明 1、本网站名称:小余塘
2、本站永久网址:https://www.yxqz.top/
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ2457431511进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容