2

我在 AIX 6.1 (Unix) 上使用 cc 编译器

#include<stdio.h>

int main()
{
    long long var;
    scanf("%lld",&var);
    printf("%lld",var);
    return 0;
}

/* When I enter 16 digit number for above code its working*/

=========================================

但我不确定为什么下面的代码没有显示正确的值

#include<stdio.h>

int main()
{
    long long var=1234567890123456;
    printf("%lld",var);
    return 0;
}

请帮忙?

4

2 回答 2

0

正如@rici 指出的那样,问题出在var分配上。

// long long var=1234567890123456;
long long var=1234567890123456LL;  // append LL
printf("%lld",var);

1234567890123456对于OP环境来说太大了int。要指定更高的值,请使用希望后缀。unsigned


我怀疑1015724736最初由 OP 打印为 1234567890123456 % 4294967296。4294967296 是 OP 的假定范围unsigned(0 到 4294967295)。

于 2013-08-12T18:39:15.913 回答
0

通常%lld适用于cc。尝试%I64d

于 2013-08-12T04:58:47.940 回答