假设我有以下代码:

int i = 0;
func(i++, i++);


返回值后立即发生增量?是否保证第一个参数为0,第二个参数为1?

最佳答案

此代码被破坏有两个原因:


除了确定要存储哪个值之外,在序列点之间两次访问变量是未定义的行为。功能参数的评估之间没有顺序点。这意味着任何事情都可能发生,您的程序可能会崩溃并刻录(或更可能显示不正确或垃圾值)。
函数参数的评估顺序是未指定的行为,这意味着您不知道将首先评估哪个参数。


Undefined behavior and sequence points

Why are these constructs (using ++) undefined behavior?

关于c - 后增量运算符是否可以保证立即运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31000799/

10-13 08:19