![]() |
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代码的兼容性,因此新语法很可能不会对以下表达式产生太多惊喜:
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |