C编译器如何解释以下代码序列

时间:2015-11-04 17:07:15

标签: c parsing

我有这个C代码行:

int a;
a = (1, 2, 3);

printf("%d", a);

为什么要打印值3? (最后一个)。

1 个答案:

答案 0 :(得分:2)

逗号运算符评估其所有"成员"但返回最后一个表达式的值。
从C11标准:

  

逗号运算符的左操作数被评估为void   表达;它的评估与之间存在一个序列点   正确的操作数。然后评估右操作数; 结果   有它的类型和价值。