printf 打印 unsigned long long

来源:互联网 发布:java中获取unix时间戳 编辑:程序博客网 时间:2024/04/30 23:53

摘自: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。
单独打印不会有问题!


原创粉丝点击