其他分享
首页 > 其他分享> > c – 常量表达式中的条件运算符

c – 常量表达式中的条件运算符

作者:互联网

我尝试使用MSVC 10的以下代码片段,它可以正常工作.

enum
{
  FOO = (sizeof(void*) == 8 ? 10 : 20)
};

int main()
{
  return FOO;
}

我想知道的是:当所有操作数都是常量表达式时,C标准(最好是C 98)是否允许我在常量表达式中使用条件运算符,或者这是Microsoft的怪癖/扩展?

解决方法:

这是完全有效且明智的标准C.

三元条件运算符形成一个表达式,如果其操作数是表达式,则表达式是一个常量表达式.

标准参考是C 11 5.19 / 2:

A conditional-expression is a core constant expression […]

请注意,到5.16,三元条件表达式是一种条件表达式.其他类型是2 == 3之类的东西.

标签:c-3,constant-expression,c,conditional-operator
来源: https://codeday.me/bug/20190825/1721942.html