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