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 b
を short
変数 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 サイトの他の関連記事を参照してください。