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代码的兼容性,因此新语法很可能不会对以下表达式产生太多惊喜:
|
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |