我无权访问 C11 规范,因此无法调查此错误。
下面的声明会在编译时出错:
int why[2] = 1 == 1 ? {1,2} : {3,4};
错误是:预期表达式在 { 之前和:预期表达式在 :
最佳答案
这不是有效的 C11。
您只能使用初始化列表而不是表达式来初始化数组。
int why[2] = { ... }; // initializer-list {}
此外,1 == 1 ? {1,2} : {3,4}
不是有效的 C 表达式,因为 {1, 2}
不是 C 表达式。
仅对于使用复合文字的信息,您可以使用指针对象获得接近您想要的东西:
int *why = (1 == 1) ? (int[2]) {1,2} : (int[2]) {3,4};
关于c - 使用三元运算符进行数组初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15877560/