我正在阅读this question有关序列点的信息,我看到了这一行:
i = (i, ++i, 1) + 1; // well defined (AFAIK)
我想知道如何调用以下语法,其作用是什么?
i = (a1, a2, ...,an);
答案 0 :(得分:3)
这是int
操作数的逗号运算符,并且始终通过括号进行分组。首先,
(i, ++i, 1)
先求i
,然后求++i
,再求1
,然后返回最后一个表达式(即1
)的结果。然后
(i, ++i, 1) + 1
与
相同1 + 1;
,结果为2
,因此此处将i
设置为2
。请注意,如果没有括号,结果在大多数情况下将不一样,因为逗号运算符的优先级最低(感谢@dbush的帮助,以帮助我在注释中找到此处。)