不完整的三元运算符不会在 cpp 中引发任何错误(gcc 版本 13.1.0)

问题描述 投票:0回答:1
int a = 4==4?:7;
cout<<a<<endl;

上面的代码不应该产生编译错误吗?另外,我得到的值是

1
。有什么解释吗?

我尝试过,

int a = 4==4?7:;

这确实会产生编译错误。 我最好的猜测是它以不同的方式解释第一个表达式,这在语法上可能是正确的。

c++ syntax
1个回答
1
投票

这是一个 gcc 条件表达式 扩展,如果您在

-pedantic
模式下编译它,则不可用。

© www.soinside.com 2019 - 2024. All rights reserved.