short、int、long 是C语言中常见的整数类型,其中 int 称为整型,short 称为短整型,long 称为长整型。
1.整型的长度
在描述 short、int、long 类型的长度时,只对 short 使用肯定的说法,而对 int、long 使用了“一般”或者“可能”等不确定的说法。这种描述的言外之意是,只有 short 的长度是确定的,是两个字节,而 int 和 long 的长度无法确定,在不同的环境下有不同的表现。
实际上C语言并没有严格规定 short、int、long 的长度,只做了宽泛的限制: - short 至少占用 2 个字节。 - int 建议为一个机器字长。32 位环境下机器字长为 4 字节,64 位环境下机器字长为 8 字节。 - short 的长度不能大于 int,long 的长度不能小于 int。
总结起来,它们的长度(所占字节数)关系为: 2 ≤ short ≤ int ≤ long
在 64 位环境下,不同的操作系统会有不同的结果,如下所示: |操作系统|short|int|long| |-|-|-|-| |Win64(64位 Windows)|2|4|4| |Linux系统|2|4|8|
2.sizeof 操作符
#include <stdio.h>
int main(){
short a = 10;
int b = 100;
int short_length = sizeof a;
int int_length = sizeof(b);
int long_length = sizeof(long);
int char_length = sizeof(char);
printf("short=%d, int=%d, long=%d, char=%d\n", short_length, int_length, long_length, char_length);
getch();
return 0;
}
在 32 位环境以及 Win64 环境下的运行结果为: short=2, int=4, long=4, char=1
整型的输出格式。 使用不同的格式控制符可以输出不同类型的整数,它们分别是: - %hd用来输出 short int 类型,hd 是 short decimal 的简写; - %d用来输出 int 类型,d 是 decimal 的简写; - %ld用来输出 long int 类型,ld 是 long decimal 的简写。
一般情况下我们习惯统一使用%d 输出所有类型的整数,但是,如果要输出的值比较大超过了int的存储范围,就很有可能发生错误。例如:
#include <stdio.h>
int main(){
short a = 10;
int b = 100;
long c = 28166459852;
printf("a=%d, b=%d, c=%d\n", a, b, c);
getch();
return 0;
}
在 64 位 windows的运行结果为: a=10, b=100, c=-1898311220
原因是%d也容纳不下 c 的值。