问我有一个复杂的表达式,我必须根据一个条件将它赋给两个变量中的一个。我可以使用这样的代码吗?
((condition) ? a : b) = complicated_expression;
答不可以。该?:运算符,像大多数运算符一样,会产生一个值,而你不能将值赋给一个值。(换句话说,?:不会产生一个左值。)如果你确实想这样做,你可以尝试类似
*((condition) ? &a : &b) = complicated_expression;虽然这不得不承认并不那么美观。
参考文献:ISO Sec. 6.3.15
H&S Sec. 7.1 pp. 179-180