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

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

4

1 回答 1

6

这是一个gcc扩展。

x ? : y

相当于

x ? x : y

详情见这里

于 2013-06-23T13:17:30.923 回答