<分区>
如果我像这样使用逗号运算符编写代码:
int i;
i = 5, i++, i++;
它会调用未定义的行为吗?
标签 c comma-operator
<分区>
如果我像这样使用逗号运算符编写代码:
int i;
i = 5, i++, i++;
它会调用未定义的行为吗?
最佳答案
没有。它不会调用未定义的行为,因为在逗号运算符的左右操作数的评估之间存在序列点。
=
的优先级高于 ,
运算符,因此 5
将绑定(bind)到 =
为
(i = 5), i++, i++;
由于逗号运算符的操作数保证从左到右求值,i = 5
将首先求值,i
将被赋值为 5
, 然后第二个表达式 i++
将被评估并且 i
将是 6
最后第三个表达式将递增 i
到 7
。
上面的语句等同于
i = 5;
i++;
i++;
关于c - C 中逗号运算符的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46212001/