1. 长度
类型名 | 类型 | 字节 | 表示范围 |
char | 字符型 | 1 | -128 ~127 |
unsigned char | 无符号字符型 | 1 | 0 ~255 |
signed char | 有符号字符型(与字符型相同) | 1 | -128 ~127 |
int | 整型 | * | 与机器有关 |
unsigned int | 无符号整型 | * | 与机器有关 |
signed int | 有符号整型(与整型相同) | * | 与机器有关 |
short int | 短整型 | 2 | -32,768~ 32,767 |
unsigned short int | 无符号短整型 | 2 | 0~65,535 |
signed short int | 有符号短整型(与短整型相同) | 2 | -32,768~ 32,767 |
long int | 长整型 | 4 | -2,147,483,648 ~2,147,483,647 |
signed long int | 有符号长整型(与长整型相同) | 4 | -2,147,483,648 ~ 2,147,483,647 |
unsigned long int | 无符号长整型 | 4 | 0~4,294,967,295 |
float | 浮点型 | 4 | 3.4E +/- 38 (7位有效数字) |
double | 双精度型 | 8 | 1.7E +/- 308 (15位有效数字) |
long double | 长双精度型 | 10 | 1.2E +/- 4932 (19位有效数字) |
signed int n; //与"int n;"等价
signed char ch; //与"char ch;"等价
unsigned int n; //与"unsigned n;"等价
unsigned char ch; //与"unsigned ch;"等价
short只用于修饰int,且用short修饰时,int可以省略,即:
short int n; //与"short n;"等价
long只能修饰int和double。当用long修饰int时,int可以省略,即:
long int n; //与"long n;"等价
int和unsigned int类型占用一个机器一个字(word)的字节。在16位操作系统上,它们占用2个字节;在32位操作系统上,它们占用4个字节。
2. 精度
如果一个双目运算符两边的操作数类型不同,先要将它们转换为相同的类型,即较低类型转换为较高类型,然后再参加运算。所谓类型的高低,跟所占的存储空间大小有直接关系,所占存储空间越大的类型,级别越高。
图中横向的箭头表示必须的转换,如两个float型数参加运算,虽然它们类型相同,但仍要先转换成double型再进行运算,结果亦为double型。纵向箭头表示当运算符两边的操作数为不同类型时的转换,如一个long型数据与一个int型数据一起运算,需要先将int型数据转换为long型,然后两者再进行运算,结果为long型。所有这些转换都是由系统自动进行的,使用时只需了解结果的类型即可。