问题与条件运算符

时间:2013-06-23 13:16:15

标签: c gcc ternary-operator

#include<stdio.h>
int main()
{
  printf("%d\n", 4 ?: 8);
}

根据C标准,这个程序是无效的,因为它缺少?:之间的表达式。但有趣的是,当我编译它正在打印的代码{{ 1}}。怎么打印4而不是显示任何编译错误

1 个答案:

答案 0 :(得分:6)

这是gcc扩展名。

x ? : y

相当于

x ? x : y

有关详细信息,请参阅here