12
と仮定long longは8バイトですが、整数オーバーフローが発生しますか?
long long b = 5*1024*1024*1024; // 5 gigs, small enough for 64 bits
printf ("%lu\n",sizeof(long long)); // prints 8 (bytes) = 64 bits
コンパイラは文句:
warning: integer overflow in expression [-Woverflow]
は、なぜそれが溢れ、私が何をしないのですん?
ダーン、そうです。私は常に浮動小数点数を追加すると考えていますが、決して長くはありません:(感謝します) –
@DervinThunk - 定数を忘れるのは簡単です – teppic
もっと正確には、定数はint型です'char'から' long long'まで、そしておそらくmore)をカバーするより一般的な用語です。そして、 'LL'を右端の' 1024'に適用すると、 '5 * 1024 * 1024 * 1024LL'、 '5 * 1024 * 1024'は' int 'として評価されますが、合法的には16ビットまで狭くすることができます。 - または '5LL *(1LL << 30)。 –