学编程的都离不开编译器,而学习c/c++的又经常会使用int类型。今天就复习一下相关知识。
尽管同样的类型在不同位数的系统上所代表的位数也可能不同,但是总归是有一些规则约束的。编译器可以根据自身硬件来选择合适的大小,但是需要满足约束:short和int型至少为16位,long型至少为32位,并且short型长度不能超过int型,而int型不能超过long型。这即是说各个类型的变量长度是由编译器来决定的,而当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节(例如,GCC)。下面列举在GCC编译器下32位机器和64位机器各个类型变量所占字节数:
C类型 | 32 | 64 |
---|---|---|
char | 1 | 1 |
short int | 2 | 2 |
int | 4 | 4 |
long long | 8 | 8 |
char* | 4 | 8 |
float | 4 | 4 |
double | 8 | 8 |
需要说明一下的是指针类型存储的是所指向变量的地址,所以32位机器只需要32bit(4字节),而64位机器需要64bit(8字节)
下面附上我的测试代码和运行结果:
(在win10系统,64位的笔记本电脑,Code::Blocks软件上运行)
#include<stdio.h>
int main()
{
printf("char = %d\n",sizeof(char));
printf("short = %d\n",sizeof(short));
printf("short int = %d\n",sizeof(short int));
printf("int = %d\n",sizeof(int));
printf("long long = %d\n",sizeof(long long ));
printf("float = %d\n",sizeof(float));
printf("double = %d\n",sizeof(double));
printf("char* = %d\n",sizeof(char*));
getchar();
return 0;
}