C++基础之printf()输出整数注意事项

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Africa_South/article/details/102573741

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

猜你喜欢

转载自blog.csdn.net/Africa_South/article/details/102573741