use*_*153 2 .net c# visual-studio
有人可以解释为什么以下程序将输出"4,6"而不是"4,4".
MainProgram()
{
int x = 2;
int y = 0;
parse(4, out y);
Console.Write(y + ",");
y = y + parse(x, out y);
Console.Write(y);
}
int parse(int x, out int y)
{
y = x;
return y;
}
Run Code Online (Sandbox Code Playgroud)
非常感谢!
我假设你真的对第二次打电话感兴趣parse,对吗?
+从左到右评估操作数,然后进行添加,然后进行最终分配.
这一行:
y = y + parse(x, out y);
Run Code Online (Sandbox Code Playgroud)
逻辑上是:
int lhs = y;
// Now lhs = 4, x = 2, y = 4
int rhs = parse(x, out y);
// Now rhs = 2, x = 2, y = 2
y = lhs + rhs;
// Now y = 6
Run Code Online (Sandbox Code Playgroud)
这对你有帮助吗?