【发布时间】:2010-09-05 09:28:32
【问题描述】:
#include <stdio.h>
int main() {
unsigned long long int num = 285212672; //FYI: fits in 29 bits
int normalInt = 5;
printf("My number is %d bytes wide and its value is %ul. A normal number is %d.\n", sizeof(num), num, normalInt);
return 0;
}
输出:
My number is 8 bytes wide and its value is 285212672l. A normal number is 0.
我认为这个意外结果来自打印unsigned long long int。你怎么printf() 和unsigned long long int?
【问题讨论】:
-
我刚刚用 gcc 编译了你的代码(用 %llu ),输出是正确的。您是否将任何选项传递给编译器?
-
请注意,samsung bada 的 newlib 似乎不支持 "%lld" : developer.bada.com/forum/…
-
我建议使用 stdint.h 并明确说明变量中的位数。我们仍处于 32 位和 64 位架构之间的过渡期,“unsigned long long int”在两者上的含义并不相同。
标签: c syntax printf format-specifiers long-long