C语言中数据类型的全部知识点
二、C语言中的数据类型
2.1 常量
常量是在程序当中不可变化的量,常量在定义的时候是要必须给一个初值的。
(1)#define :定义宏常量的
(2)const :定义一个const常量
2.2 字符串常量
“hello world”
对于#define的这类型常量,C语言当中的习惯是常量名称为大写,但是对于普通const常量以及变量的话,一般为小写结合大写的方式
2.3 二进制数、位、字节与字
我们一般都习惯的是十进制的数:10,12这类的;
一个位只能是代表0或者1两个状态,简称为bit,一个位是一个bit
一个字节为8个二进制被称为8位,简称BYTE,8个bit是一个字节
一个字是2个字节,简称WORD;两个字为双字,简称:DWORD;
2.4 八进制
八进制为以8为基数的数制系统,C语言里面呢0表示八进制,例如:0666;
2.5 十六进制
十六进制值16为基数的数制系统,那么C语言当中用0x表示十六进制。下面给大家看一个表格:
注意:
十进制转化成八进制的话,用十进制数作为被除数,八进制的数值为除数,取商数和余数,一直到商数为0的时候,将余数倒过来就是转化最后的结果;
十进制转化成十六进制的时候,用十进制作为被除数,十六进制作为除数,取商数和余数,直到商数为0 的时候,将余数倒过来就是转化后的结果;
2.6 原码
将最高位数做符号位,(0代表正,1代表负)其他的各位代表数值本身的绝对值
2.7 反码
一个数如果值为正,那么反码和原码相同,那么如果数值为负,符号位为1,其他各个位与原码相反
2.8 补码
原码和反码都不利于计算的运算,比如说原码表示的7和-7相加的话,这里还需要判断符号位。
正数:原码反码补码都相同的;负数:最高位是1,其余的各位原码取反,最后对整个数+1;
补码符号位不懂,其他位反求。最后整个书+1,得到原码
2.9 sizeof关键字
sizeof是C语言当中的关键字,功能是求指定数据类型在内存中的大小,单位还有字节
sizeof与size_t类型,后面会给大家罗列一个C语言关键字的表格,大家可以参考背下来
2.10 int类型
(1)int常量,变量:int就是32位的一个二进制整数,在内存里面占据了4个字节的空间
(2)printf输出int值:%d表示输出一个有符号的10进制整数,%u代表输出一个无符号的十进制整数
(3)printf输出八进制和十六进制
%x代表输出15进制,%X:用大写字母方式输出16进制数
%o代表输出八进制
(4)short,long,long long,unsigned int
- short的意思是短整数,在32位的系统下都是2个字节,是16bit
- long意思是长整数,在32位的系统下都是4个字节,那么在64位的系统下,windows还是4个字节,unix下是8个字节;
- Int不管是32位系统下还是64位的系统下,long都是4个字节,在64位系统下面windows还是4个字节;
- Long long是64位的,也就是所8个字节大小的整数,对于32位操作系统,CPU寄存器是32位,所以计算long long类型的数据,效率是很低的
- 9l,9L,9ll,9LL,9u,9ull,9ULL
(5)整数溢出
计算一个整数的时候,超过整数能够容纳的最大单位之后,整数就会溢出,溢出的结果是高位舍弃
当一个小的整数赋值给大的整数,符号位是不会丢失的,从而继承
(6)大端对齐和小端对齐
对于arm和intel这种x86构架的复杂指令CPU,整数在内存中是倒着存放的,低地址放在低位,高地址放在高位,小端对齐
但是对于unix服务器的话CPU更多的是采用大端对齐的方式存放整数
2.11 char类型
(1)char常量与变量
char c是定义一个char变量
‘a’,char的常量
Char的本质的话就是一个整数,是一个只有1字节大小的整数
(2)printf输出char
%c意思是输出一个字符不是一个整数
(3)不可打印char转义符
\a,报警
\b 退格
\n 换行
\r 回车
\t 进制表
\\斜杠
\’单引号
\”双引号
\?问号
(4)char和unsigned char
char取值范围是-128到127
unsigned char 为0-255
2.12 浮点 float,double,long double类型
(1)浮点的常量和变量
Float在32位系统下是4个字节,double在位系统下是8个字节
小树的效率也是很低的,除非明确的要计算一个小数
(2)printf输出浮点数
%f,%Lf
%f是输出一个double
%lf输出一个long double
2.13 类型限定
(1)const:代表着一个不能改变的值的常量
(2)volatile:表示变量是一个可能被COU指令之外的地方改变的,编译器就不会针对这个变量去优化目标代码。
(3)register:变量在CPU寄存器里面,不是在内存里面的。但是regist是建议型指令,而不是命令型的指令
以上就是C语言,第二部分数据类型的所有知识点,下一篇文章会说到字符串格式化的输出和输入,大家在找到配套的视频的时候,可以以本篇文章作为参考笔记。