代入演算子の動作の内部動作

代入演算子(特に複合代入演算子)は、算数・数学と考え方が違うのでピンとこない方もいるのではないでしょうか

算数・数学の数式は計算が同時に行われることになります
つまり、時間経過の感覚がありませんが、プログラミングでは、コードが分解されステップのように順番に実行されます
このような内部の動作を知ることで理解を深めていければと思います

サンプルC#コード

int a = 1;
a = a + 5;
System.Console.WriteLine(a);

中間コード(IL)

全コード

C#のコードを.NETが解釈できるように中間言語に変換したものです

IL_0000: ldc.i4.1
IL_0001: stloc.0
IL_0002: ldloc.0
IL_0003: ldc.i4.5
IL_0004: add
IL_0005: stloc.0
IL_0006: ldloc.0
IL_0007: call void [System.Console]System.Console::WriteLine(int32)

解説

最初に整数1を評価スタックに積み上げます

// int a = 1;
IL_0000: ldc.i4.1
IL_0001: stloc.0

加算します

// a = a + 5;
IL_0002: ldloc.0
IL_0003: ldc.i4.5
IL_0004: add
IL_0005: stloc.0
IL_0006: ldloc.0

コンソールに表示します

// System.Console.WriteLine(a);
IL_0007: call void [System.Console]System.Console::WriteLine(int32)

C#

Posted by hidepon