|
|
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 · 矩阵乘法代码工作不正常 11 月前 |
|
|
Giogre · 为包含许多数值字段的简单“struct”重载比较运算符 11 月前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 11 月前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 11 月前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 12 月前 |