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

1. 各类型所占字节

在C语言中,常用的整数类型有short、int、long (int)、long long,其所占用字节如下:

类型字节
short2
int4
long4/8 (取决于32位/64位机器)
long long8

可以看到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
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值