1. 各类型所占字节
在C语言中,常用的整数类型有short、int、long (int)、long long
,其所占用字节如下:
类型 | 字节 |
---|---|
short | 2 |
int | 4 |
long | 4/8 (取决于32位/64位机器) |
long long | 8 |
可以看到long
占用的字节不低于int
。
2.各类型的格式符
类型 | 格式 |
---|---|
short | %hd |
int | %d |
long | %ld |
long long | %lld |
注意:在输出不同类型的整数时,需要用对应的格式符,才能正确解读,常见错误如下:
- 在printf中%d用于int或者比int小的整数类型。比int小的类型被转型成int。
有时候用%d输出比int小的可能没问题; - 如果用
%lld
输出字节占比比long long
小的就会出问题,且输出不确定
unsigned int n1 = 100;
printf("%lld\n", n1);
int n2 = 1000;
printf("%lld\n", n2);
long int n3 = -100;
printf("%lld\n", n3);
long int n4 = 10000;
printf("%lld\n", n4);
- 我的测试输出的是
// 正数相同、负数相同
64757137477206116
64757137477207016
64757141772173212
64757137477216016
- C++中整型字面量的类型由其值和符号确定。
默认情况下,十进制字面量是带符号数,类型是int、long、long long
里面尺寸较小的那个,即只需要能容纳下该数就行,这就导致了我们使用lld
输出字面常量可能会导致的问题。
printf("%lld\n", 100); // 5647392367968356
printf("%lld\n", (long long)100); // 100