C90之前关键字 | C90关键字 | C99关键字 |
int | signed | _Bool |
long | void | _Complex |
short | _Imaginary | |
unsigned | ||
char | ||
float | ||
double |
1、数据类型表
类型范围:
unsigned short 0~65535
unsigned int 0~4292967295
unsigned long long 0~18446744073709551615
short不会比int长,long不会比int短。虽然我们常用的PC上long和int是4,short是2,但是在好多机子不一定是这样的,但都满足short,int,long长度原则。
//因为计算机是补码存储,
void main()
{
char a=0xff;
printf("%d\n",a); //打印结果是-1,一个字节最大的负数
char a=0x80;
printf("%d\n",a); //打印结果是-128,一个字节最小负数
}
e7即10的7次方,即1后面7个0
2的10次方,在二进制中,即1后面10个0,即2^10=10000000000b=1024
2、float和double类型:
double类型的升级类型:long double类型不少于double的精度
float的有效数字为:6
float在内存的存储位置
符号位 | 指数 | 尾数 |
1位 | 8位 | 23位 |
指数:指数部分的存储采用移位存储,存储的数据为元数据 +127,指数范围为-127~128
7.0的内存值为:1088421888 = 0100 0000 1110 0000 0000 0000 0000 0000
符号位 | 指数 | 尾数 |
0 | 100 0000 1=129 | 11=3 |
由于尾数是11,所以二进制的科学计数为:1.11*2^指数,指数=129-127=2.
所以1088421888代表的浮点的值是:1.11*2^2 = 111=7.
1.xxx,其中xxx是尾数,1并不存储
3、八进制和十六进制
十六进制前缀:0x ,八进制前缀:0
十六进制输出:%x,%X,%#x,%#X , 八进制输出:%o,%#o
转义字符:八进制和十六进制转义字符:’\102’和’\x42’是字符‘B’
给一个变量赋值:=,scanf,初始化