Afs*_*hin 3 c c++ gcc-statement-expression
我最近注意到GCC/Clang中有一个奇怪的有效C/C++表达式,这是我以前从未见过的。这是C++中的示例,但类似的表达式也适用于C:
int main(){
int z = 5;
auto x = ({z > 3 ? 3 : 2;}); // <-- expression
std::cout << x;
}
Run Code Online (Sandbox Code Playgroud)
它的作用在某种程度上是显而易见的,但我想知道它叫什么。由于它在MSVC中不值得,我猜它是一个非标准扩展。但是有什么东西也适用于MSVC吗?特别是在C?
它称为语句 expr,在 GCC 中使用。你的表达({z > 3 ? 3 : 2;})可以翻译成
if (z > 3) {x = 3;} else {x = 2;}
Run Code Online (Sandbox Code Playgroud)
来自文档:
括在括号中的复合语句可能在 GNU C 中显示为表达式。这允许您在表达式中使用循环、开关和局部变量。
换句话说,它提供了将复合语句放在表达式位置的能力。
相关帖子:
| 归档时间: |
|
| 查看次数: |
513 次 |
| 最近记录: |