Rud*_*sel 8 c ternary-operator
我无法访问C11规范,因此我无法调查此错误.
以下声明在编译期间出现错误:
int why[2] = 1 == 1 ? {1,2} : {3,4};
Run Code Online (Sandbox Code Playgroud)
错误是:{之前的预期表达式:和之前的预期表达式:
这不是有效的C11.
您只能使用不带表达式的初始化列表初始化数组.
int why[2] = { ... }; // initializer-list {}
Run Code Online (Sandbox Code Playgroud)
而且,1 == 1 ? {1,2} : {3,4}它不是有效的C表达式,因为{1, 2}它不是C表达式.
只是为了使用复合文字的信息,您可以使用指针对象获得您想要的东西:
int *why = (1 == 1) ? (int[2]) {1,2} : (int[2]) {3,4};
Run Code Online (Sandbox Code Playgroud)