【发布时间】:2011-11-20 22:15:12
【问题描述】:
我正在将 C++ 实用程序移植到 C#。当我在 C++ 中运行以下语句时,我得到了正确的操作。但是,当我在 C# 中运行相同的语句时...
有人知道为什么要执行“begin++”吗?疯狂的是,如果我在 i=0 的情况下运行 (i % 2) == 0,即时窗口返回 true。
【问题讨论】:
-
这甚至是在 C++ 中定义的行为吗?
-
如果这不能说服你停止编写这样的代码,我不知道会怎样。
-
@SimpleCoder - 我认为我们在 C# 中看到了 2 个步骤
-
@CodeInChaos:不,这不是 C++ 中定义的行为,因为
i++在序列点之间既递增又读取。 -
你在 C++ 中得到“正确”的行为完全是偶然的; C++ 中没有“正确”的行为。或者,更确切地说,每个行为都是正确的。在 C# 中,只有 一个 正确的行为,我向你保证,你得到了它。如果您期望不同的行为,那是您的期望不正确,因此我的建议是开始期望 C# 中的正确行为,并停止依赖 C++ 中的实现细节。
标签: c# c++ operator-precedence