ホームページ > バックエンド開発 > C++ > C# では、「short = short」は機能するのに、「short = short short」は機能しないのはなぜですか?

C# では、「short = short」は機能するのに、「short = short short」は機能しないのはなぜですか?

Susan Sarandon
リリース: 2025-01-23 08:46:14
オリジナル
256 人が閲覧しました

Why Does `short  = short` Work While `short = short   short` Doesn't in C#?

C# で short = short は動作するが short = short short が動作しない理由

プログラミングでは、データ型の管理が非常に重要です。 C# では、短整数を扱うときによくある落とし穴は、 = 演算子が短整数変数に対して予期した動作と異なる動作をすることです。この問題をさらに深く掘り下げてみましょう。

問題

次の C# コードを考えてみましょう:

<code class="language-csharp">short a, b;
a = 10;
b = 10;
a = a + b; // 错误:无法隐式转换类型“int”为“short”。

// 我们也可以使用算术赋值运算符编写此代码,如下所示

a += b; // 但此代码可以成功运行,为什么?

Console.Write(a);</code>
ログイン後にコピー

最初の行で、a bshort 変数 a に代入するとエラーが発生します。これは、2 つの short の合計が int であり、暗黙的に short に変換できないためです。ただし、2 行目で = を使用すると、正常にコンパイルされます。これはなぜでしょうか?

整数演算を理解する

その答えは、C# での整数演算の仕組みにあります。整数加算の結果は、オペランドのデータ型に関係なく、int となります。これにより、short short の結果が short である場合に発生する可能性のある整数オーバーフローのリスクが回避されます。

= オペレーター

= 演算子は a = a b の短縮形です。 C# 仕様によれば、演算子の戻り値の型が x の型 (この場合は short) に暗黙的に変換可能な場合、演算は x = (T)(x op y) として評価されます。ここで、 T は x の型です。

a = b の場合、コンパイラは、a b の結果 (つまり、int) を short に変換するために必要なキャストを挿入します。これにより、複合割り当てが期待どおりに機能するようになります。

結論

C# での整数合計の動作は最初は混乱するかもしれませんが、予期しない動作を回避し、堅牢なコードを作成するには、基礎となる算術演算子と代入演算子の規則を理解することが重要です。データ型を注意深く管理し、 = 演算子を正しく使用することで、開発者はプログラムが期待どおりに動作することを保証できます。

以上がC# では、「short = short」は機能するのに、「short = short short」は機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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