我有这个代码(我正在使用ansi c中的大文件支持)
unsigned long int tmp,final
final=1231123123123213
tmp=final;
printf("%llu %llu \n",final,tmp);
printf("%llu \n ",tmp);
打印
1231123123123213 0
1231123123123213
我不明白
答案 0 :(得分:7)
unsigned long int
使用的格式说明符为%lu
。您正在使用%llu
,这是unsigned long long int
的格式说明符。代码的行为未定义。
你需要决定你想要做什么。使用正确的格式说明符(以匹配类型),或使用正确的类型(以匹配格式说明符)。
答案 1 :(得分:2)
因为您使用了错误的类型。
unsigned long long int tmp, final;
编译器应该抱怨数字常量(文字1231123123123213)不适合long int。它被截断了。另外,%llu用于打印长时间的整数,而不是长整数;)。
答案 2 :(得分:-1)
您需要%lu
而不是%llu
。