以下表达式的作用是:x =(a1,a2,...,n);

时间:2019-06-20 12:36:24

标签: c++ c

我正在阅读this question有关序列点的信息,我看到了这一行:

  

i = (i, ++i, 1) + 1; // well defined (AFAIK)

我想知道如何调用以下语法,其作用是什么?

i = (a1, a2, ...,an);

1 个答案:

答案 0 :(得分:3)

这是int操作数的逗号运算符,并且始终通过括号进行分组。首先,

(i, ++i, 1)

先求i,然后求++i,再求1,然后返回最后一个表达式(即1)的结果。然后

(i, ++i, 1) + 1

相同
1 + 1;

,结果为2,因此此处将i设置为2。请注意,如果没有括号,结果在大多数情况下将不一样,因为逗号运算符的优先级最低(感谢@dbush的帮助,以帮助我在注释中找到此处。)