printf 打印 unsigned long long

摘自:http://bbs.bccn.net/thread-357618-1-1.html

Q: 有关用printf(%d,…)输出unsigned long long int的问题!
有一道面试题,代码如下(大概是这样):

#include<stdio.h>

int main() {
unsigned long long b =1 ;
int a =100;

printf("%d, %d", b, a); // gcc 输出:1, 0
printf("%d, %d, %d", b, a); // gcc 输出:1, 0, 100
return 0;
}

结果是让我意外的   1,0
怎会如此?不才恳请高手分析!


A:

printf函数打印时是四字节取的,u long long 则是8字节,存储时b是低四字节存1而高四字节存0,在一起打印是printf先打印u long long,既按四字节取低四字节打出1,然后打印a,取高四字节0打印。   
其实printf(b,a)时并没有打印a,都是在打印b。
单独打印不会有问题!


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值