long int
以下に示すように、タイプの変数が 2 つあります。
long int a=-2147483648, b=-2147483648;
a=a+b;
printf("%d",a);
私はゼロになっています。タイプを に変更してみましたlong long int
が、まだ正しい答えが得られません。
long int
以下に示すように、タイプの変数が 2 つあります。
long int a=-2147483648, b=-2147483648;
a=a+b;
printf("%d",a);
私はゼロになっています。タイプを に変更してみましたlong long int
が、まだ正しい答えが得られません。
を印刷するには を使用し、を%ld
印刷するには を使用する必要があります。long int
%lld
long long int
long long int
その計算の結果 (または実際には、使用している入力値) を格納するのに十分な大きさであることが保証されているのはだけであることに注意してください。
また、コンパイラを C99 互換モードで使用していることも確認する必要があります (たとえば、-std=gnu99
gcc へのオプションを使用)。これは、long long int
型が C99 まで導入されなかったためです。また、多くのコンパイラlong long int
は拡張機能として C90 モードで実装していますが、定数は C90 でまたは2147483648
の型を持つ場合があります。実装がこれに該当する場合、 の値も unsigned 型になるため正になり、全体的な結果は期待したものとは異なります。unsigned int
unsigned long
-2147483648
Use printf("%ld",a);
Have a look at format specifiers for printf