C++中的条件运算符可以返回一个LValk,而C不允许类似的功能.因此,以下内容在C++中是合法的:
(true ? a : b) = 1;
要在C中复制这一点,您必须求助于if/else,或直接处理引用:
*(true ? &a : &b) = 1;
同样在C++中,?:
和=
操作符有equal precedence and group right-to-left个,这样:
(true ? a = 1 : b = 2);
是有效的C++代码,但是在C中没有在最后表达式周围插入圆括号时会出现错误:
(true ? a = 1 : (b = 2));