小编And*_*rov的帖子

在"k + = c + = k + = c;"中是否有对内联运算符的解释?

以下操作的结果是什么解释?

k += c += k += c;
Run Code Online (Sandbox Code Playgroud)

我试图理解以下代码的输出结果:

int k = 10;
int c = 30;
k += c += k += c;
//k=80 instead of 110
//c=70
Run Code Online (Sandbox Code Playgroud)

目前我正在努力理解为什么"k"的结果是80.为什么分配k = 40不起作用(实际上Visual Studio告诉我该值没有在其他地方使用)?

为什么k 80而不是110?

如果我将操作拆分为:

k+=c;
c+=k;
k+=c;
Run Code Online (Sandbox Code Playgroud)

结果是k = 110.

我试图通过CIL查看,但是我在解释生成的CIL方面并没有那么深刻,也无法得到一些细节:

 // [11 13 - 11 24]
IL_0001: ldc.i4.s     10
IL_0003: stloc.0      // k

// [12 13 - 12 24]
IL_0004: ldc.i4.s     30
IL_0006: stloc.1      // c

// [13 13 - 13 30]
IL_0007: ldloc.0      // …
Run Code Online (Sandbox Code Playgroud)

c# cil compound-assignment

88
推荐指数
3
解决办法
6116
查看次数

标签 统计

c# ×1

cil ×1

compound-assignment ×1