C语言中的整型

版权声明:欢迎关注公众号「Golang来了」交流。文章若有不妥之处请指正,欢迎转载,不过须注明出处~ https://blog.csdn.net/asd1126163471/article/details/54581325

我们都知道,C语言中,int的字节长度和编译器有关系,所以,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则:
1、长整形(long int)不一定比整型长;
2、整型不一定比短整型(short int)长;
3、short int至少应为16位(2字节);
4、long int至少应为32位。

下面总结了不同位数机器上的各种类型的字节长度:
16位编译器
char :1个字节(-128~127)
char*(即指针变量): 2个字节
short (int) : 2个字节
int: 2个字节
unsigned int : 2个字节
float: 4个字节
double: 8个字节
long(int): 4个字节
long long: 8个字节
unsigned long: 4个字节

32位编译器
char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节

64位编译器
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节

还有两个类型修饰符signed(有符号)和unsigned(无符号),就拿int来说,32位编译器下,int(如果不加变量修饰符的话默认就是signed int)的范围就是 -32768 ~ 32767;unsigned int 的范围就是 0~65535。

在这里我提下这个类型–size_t,在阅读redis源码的时候遇到过,
size_t是在头文件stddef.h中定义的,size_t的位数有具体架构而定,32位架构可以定义为 typedef unsigned int size_t(4个字节),64位架构中可以定义为 typedef unsigned long size_t (8个字节),要注意的是无符号的。

今天就先写到这,以后有别的再补充~ C语言真奇妙

猜你喜欢

转载自blog.csdn.net/asd1126163471/article/details/54581325