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

通常%lldは cc で動作します。試す%I64d

于 2013-08-12T04:58:47.940 に答える
0

@riciが指摘しているように、問題はvar割り当てにあります。

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

1234567890123456OP環境intunsignedは大きすぎました。より高い値を指定するには、desire サフィックスを使用します。


1015724736OPによって最初に1234567890123456%4294967296として出力されたと思われます.4294967296は、OPの想定範囲(unsigned0〜4294967295)です。

于 2013-08-12T18:39:15.913 に答える