ホームページ > バックエンド開発 > C++ > C で `(-2147483648 > 0)` が True と評価されるのはなぜですか?

C で `(-2147483648 > 0)` が True と評価されるのはなぜですか?

DDD
リリース: 2024-12-25 05:23:20
オリジナル
221 人が閲覧しました

Why Does `(-2147483648 > 0)` C で True と評価しますか?
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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート