返回一个很长的长值

#include <stdio.h>

int main(void) 
{
    long long x = test();
    printf("%lldn", x);

    return 1;
}

long long test()
{   
    return 1111111111111111111;
} 
输出为734294471。如果我用一个数字替换对
test()
的调用,输出就像我期望的那样。我使用调试器检查了x的值,但没有设置函数返回的值。出了什么问题? 我正在使用Visual Studio 2010与Visual C ++编译器。     
已邀请:
你需要在调用之前声明
test
,否则C假定它返回
int
。     
IIRC,C / C ++中的长期常量后缀为'LL'。
long long test() {
    return 1111111111111111111LL;
}
你的编译器将你的常量视为一个32位长(如果你取常数模2 ^ 32,你得到734294471.)     
尝试将LL添加到您的返回值:
long long test()
{   
    return 1111111111111111111LL;
} 
    
将后缀LL添加到文字中,看看会发生什么。据推测,编译器将文字强制转换为int。你从编译器得到任何警告吗?     

要回复问题请先登录注册