#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?
3 回答

慕虎7371278
TA貢獻1802條經驗 獲得超4個贊
將ll(el-el)long-long修飾符與u(無符號)轉換一起使用。(在Windows,GNU中運行)。
printf("%llu", 285212672);

躍然一笑
TA貢獻1826條經驗 獲得超6個贊
您可能需要使用inttypes.h庫,讓你的類型,如嘗試 int32_t,int64_t,uint64_t等等,那么你可以使用它的宏,例如:
uint64_t x;
uint32_t y;
printf("x: %"PRId64", y: %"PRId32"\n", x, y);
這是“保證”不給你同樣的麻煩的long,unsigned long long等等,因為你不必去猜測有多少位是每個數據類型。
- 3 回答
- 0 關注
- 3114 瀏覽
添加回答
舉報
0/150
提交
取消