#include <stdio.h>
int main(void)
{
long long x = test();
printf("%lld\n", x);
return 1;
}
long long test()
{
return 1111111111111111111;
} 输出为734294471。如果我将对test()的调用替换为数字,则输出如我所预期的那样。我使用调试器检查了x的值,但没有将函数返回的值设置为。哪里出了问题?
我正在使用带有Visual C++编译器的Visual Studio2010。
发布于 2011-01-25 06:26:48
您需要在调用它之前声明test,否则C会假定它返回int。
发布于 2011-01-25 06:28:46
IIRC,C/C++中的long long常量以'LL‘为后缀。
long long test() {
return 1111111111111111111LL;
}您的编译器将您的常量视为32位长度(如果您以2^32为模的常量,则得到734294471)。
发布于 2011-01-25 06:29:28
尝试将LL添加到返回值:
long long test()
{
return 1111111111111111111LL;
} https://stackoverflow.com/questions/4787934
复制相似问题