ホームページ > バックエンド開発 > C++ > C で符号なし変数に負の値を代入するとどうなりますか?

C で符号なし変数に負の値を代入するとどうなりますか?

Mary-Kate Olsen
リリース: 2024-12-18 13:18:16
オリジナル
631 人が閲覧しました

What Happens When You Assign a Negative Value to an Unsigned Variable in C  ?

符号なし変数への負の値の代入: 何が起こりますか?

C では、符号なし変数に負の値を代入しようとすると、次のようになります。例:

unsigned int nVal = 0;
nVal = -5;
ログイン後にコピー

動作は次のようになります。

説明

C 標準のセクション 4.7 conv.integral によると:

「宛先の型が符号なしの場合、結果のvalue は、ソース整数に一致する最小の符号なし整数です (モジュロ2n ここで、n は符号なし型を表すために使用されるビット数です)。

2 の補数表現 (最新のプロセッサーのほとんどが使用) では、これは実際の変更がないことを意味します。切り捨てがない場合のビットパターン。結果は、(-5 232)、つまり 4294967291 と同等の値になります。これは、-5 の 2 の補数表現が 4294967291 のビット単位表現と同じであるためです。

つまり、符号なし変数に負の値を代入しても、オーバーフローや例外は発生しません。代わりに、同等の正の符号なし値にラップアラウンドします。

注:

この動作は C で明確に定義されていますが、広く理解されていません。符号なし変数を扱うときは、この潜在的な落とし穴に注意することが重要です。

以上がC で符号なし変数に負の値を代入するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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