如果以下代码有效
i=1;
i<10 ? printf("Hello") : printf("Bye");
那么分配也应该起作用。导致它产生错误的原因是什么?
i<10 ? foo=10 : foo=12;
如果以下代码有效
i=1;
i<10 ? printf("Hello") : printf("Bye");
那么分配也应该起作用。导致它产生错误的原因是什么?
i<10 ? foo=10 : foo=12;
导致它产生错误的原因是什么?
运算符优先级。
i<10 ? foo=10 : foo=12;
相当于(i<10 ? foo=10 : foo) = 12;
使用括号来解决您的问题:
i<10 ? (foo=10) : (foo=12);
原因是运算符优先级。以下将起作用:
i<10 ? (foo=10) : (foo=12);
您的原始表达式被解析为
(i<10 ? foo=10 : foo)=12;
导致错误(lvalue required as left operand of assignment
)。