0)` C で True と評価しますか? " />
C では (-2147483648 > 0) が True を返すのはなぜですか?
この記事では、式 (-2147483648 >) が使用される C の複雑な動作について説明します。 ; 0) 予期せず評価されます。 true.
-2147483648 (最小の 32 ビット整数) は、単項 - 演算子が適用された正の値として表されます。ただし、long int および long long int が int よりも広い範囲に欠けているプラットフォームでは、これが行われます。値が整数範囲の正側をオーバーフローしました。
その結果、コンパイラは次のように処理します。 2147483648 は実装依存の負の値です。この負の値は、単項 - 演算子を適用すると正になります。これにより、式は true と評価されます。
あるいは、実装では値を表すために符号なし型が使用される場合があります。同じ結果になります。この動作は C では定義されておらず、実装は適切と思われる方法でオーバーフローを自由に解釈できます。
そのような事態を回避するには例外として、INT_MIN のような定数は通常、-2147483648 ではなく (-2147483647 - 1) として定義され、最小整数値が正しく表現されることが保証されます。
以上がC で `(-2147483648 > 0)` が True と評価されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。