整型
类型
最小范围
char
0~127
signed char
-127~127
unsigned char
0~255
short int
-32767~32767
unsigned short int
0str[] = ; ~ 65535
int
-32767~32767
unsigned int
0 ~ 65535
long int
-2147483647~2147483647
unsigned long int
0~4294967295
//两者相同,即具有int以外的声明时,整形变量的声明可以省略int
unsigned short a;
unsigned short int a;
即short int至少16位; long int 至少32位, 且比int 长; 而int没规定长短,但至少比short int 长;
signed关键字一般用于char, 其他整型默认为signed
缺省的char声明,在不同的编译器(由于编译器实现)可能是signed,也可能是unsigned。 char型变量的值在signed char和 unsigned char的交集中时,具有强可移植性(ASCII字符都在);只有当char型变量显式声明为signed和unsigned时,才对它执行算数运算。
整形的特点在limits.h中有说明
声明
int a = 128u //u后缀
整形提升
char 和 short计算之前会被转换成普通int
但是编译器可以优化,不进行提升
算术转换
转换优先级越来越高(既 double + int 时,int 被转换成 double)
long double ; double; float; unsigned long int; long int; unsigned int; int
int a = 5000;
int b = 25;
long c = a * b; //16位机器会溢出
long c = (long)a * b;
int转换成float 可能损失精度,float 转换成int 可能产生未知结果
Last updated
Was this helpful?