我在驱动程序实现中发现了奇怪的宏,我无法向自己解释。 简化示例是:
cout << ({int i=0; while(i<10) {++i;} i;}) << endl;
它将输出10.
但是为什么这表达式会成为一个价值呢?它似乎适用于C和C ++。
有人可以解释一下吗?指向关键字和参考将是伟大的。
答案 0 :(得分:15)
这是GCC extension:
括在括号中的复合语句可能显示为 表达式在GNU C中。
复合语句中的最后一件事应该是表达式 然后是分号;这个子表达式的值用作 整个结构的价值。