|   |      1 
                                  74
                             C++中的条件运算符可以返回一个LValk,而C不允许类似的功能。因此,以下内容在C++中是合法的: 要在C中复制这一点,您必须求助于if/else,或者直接处理引用: 
   也在C++中,
    是有效的C++代码,但是在C中没有在最后表达式周围插入圆括号时会出现错误:  | 
|   |      2 
                                  24
                             
 它的定义还有其他不同之处,几乎没有实际后果。在C++中,第一个操作数被转换成布尔值,在C中,它与0比较。这与==,!=,的定义不同,在C和C++之间。 C++中还存在更复杂的规则,用于根据第二和第三操作数的类型推断A:表达式的类型。这反映了C++中用户定义隐式转换的可能性。 示例代码。有效C++;无效的C。 
    编辑: 虽然?:无法在C中返回l值,但?:的语法可能是: 
   这意味着
    C++将语法改变为: 
   而允许条件表达式在某些情况下成为l值的扩展可能会
    虽然我没有任何证据,但我的假设是,由于语法更改不会破坏与现有C代码的兼容性,因此新语法很可能不会对以下表达式产生太多惊喜:  | 
|   | AstralHex · 矩阵乘法代码工作不正常 8 月前 | 
|   | Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 8 月前 | 
|   | Die4Toast · 递归调用成员箭头运算符-> 8 月前 | 
|   | Anka Hanım · 关于结构和动态数组地址的问题 8 月前 |