c - C 中逗号运算符的行为

标签 c comma-operator

<分区>

如果我像这样使用逗号运算符编写代码:

int i;
i = 5, i++, i++;

它会调用未定义的行为吗?

最佳答案

没有。它不会调用未定义的行为,因为在逗号运算符的左右操作数的评估之间存在序列点。

= 的优先级高于 , 运算符,因此 5 将绑定(bind)到 =

(i = 5), i++, i++;

由于逗号运算符的操作数保证从左到右求值,i = 5 将首先求值,i 将被赋值为 5 , 然后第二个表达式 i++ 将被评估并且 i 将是 6 最后第三个表达式将递增 i7

上面的语句等同于

i = 5;
i++;
i++;

关于c - C 中逗号运算符的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46212001/

相关文章:

C - 数组代码中奇怪的 Valgrind 投诉

c - 打印答案时出现段错误

c++ - while 循环与逗号运算符对比重复代码对比 “break;”

c - 在 for 循环中一遍又一遍地创建和连接线程 (C)

c - Valgrind 报告

我可以使用 C 作为我的引擎的脚本语言吗?

c++ - 逗号运算符的用法

c++ - 为什么我重载的逗号运算符没有被调用?

c - 在 c 中使用逗号运算符

c - 请解释此程序中的逗号运算符