基本数据类型
关键字:
系统预先定义好的,有特定含义的,都是小写,不能重新定义(int int//error)
(32个关键字!!)
数据类型:char、short、int、long、float、double、struct、union、enum、void
控制语句:if、else、while、switch、case、default、break、continue、for、do、goto
存储类型:auto、static、extern、register
return:返回函数
const:只读
signed:有符号数
unsigned:无符号数
sizeof:求所占内存空间的大小(sizeof(数据类型)、sizeof(变量名))
typedef:给已有的数据类型起别名
volatile:防止编译器优化
标识符:程序员自己去定义的,一般用来定义变量名,函数名,类型名
要求:(见名知意)
不能和关键字重名
数字、字母、下划线、组成
第一个不能为数字
基本数据类型:
32OS:
字符型:char(1字节)
整型:int(4字节) short(2字节) long(4字节)
浮点型: float(4字节) double(8字节)
64OS:
字符型:char(1字节)
整型:int(4字节) short(2字节) long(8字节)
浮点型: float(4字节) double(8字节)
注意:不同的数据类型所占的内存空间是不一样的,作用:为了让我们合理的分配内存空间
有符号数和无符号数:
有符号数:signed:正数和负数
数值数据在计算机中以2进制进行存储
并且所有的数据在计算机中都是以补码的形式存储的
符号位:最高位为符号位:0表示正数,1表示负数
10 ---------> 0000 1010
-10---------> 1000 1010
10+(-10)= 0
因此原码、反码、补码
正数:原码,反码,补码都是一样的!!
10
原码:0000 1010
反码:0000 1010
补码:0000 1010
负数:
原码:最高位为符号位
反码:符号位不变,其他位取反
补码:反码+1
-10
原码:1000 1010
反码:1111 0101
补码:1111 0110
知道一个数的补码,怎样去求得原码?
负数:补码= 反码+1
补码的补码的就是原
(补码-1),然后符号位不变,其他位取反
无符号数:unsigned:正数
字符型家族
值域范围:
char(1byte == 8bit)
Unsigned : 0000 0000 ------------1111 1111 (0-255)
Signed: 1000 0000 -----------0111 1111 (-128~127)
Unsigned char c = 260;(超范围:转圈去计算他的值)
Printf(“%d\n”,c); // 4
Signed char a = 130;
Printf(“%d\n”,a);//-126