标签: c gcc ternary-operator
#include<stdio.h> int main() { printf("%d\n", 4 ?: 8); }
根据C标准,这个程序是无效的,因为它缺少?和:之间的表达式。但有趣的是,当我编译它正在打印的代码{{ 1}}。怎么打印4而不是显示任何编译错误
?
:
4
答案 0 :(得分:6)
这是gcc扩展名。
gcc
x ? : y
相当于
x ? x : y
有关详细信息,请参阅here。