为什么这样做:C ++最后一个语句作为表达式的结果

时间:2015-12-24 13:53:16

标签: c++

我在驱动程序实现中发现了奇怪的宏,我无法向自己解释。 简化示例是:

cout << ({int i=0; while(i<10) {++i;} i;}) << endl;

它将输出10.

但是为什么这表达式会成为一个价值呢?它似乎适用于C和C ++。

有人可以解释一下吗?指向关键字和参考将是伟大的。

1 个答案:

答案 0 :(得分:15)

这是GCC extension

  

括在括号中的复合语句可能显示为   表达式在GNU C中。

     

复合语句中的最后一件事应该是表达式   然后是分号;这个子表达式的值用作   整个结构的价值。