C++中是否规范地定义了:
- 布尔参数Φ的“小于(less than)运算符”并且如果有的话,
- 四个参数排列的结果是什么
换句话说,以下操作的结果是有准确定义的吗
在我的设定下(Centos 7, GCC 4.8.2),下面的代码得出了我期望的结果(鉴于C用0表示false用1表示true)
虽然我敢肯定,大多数(甚至所有)编译器都会给出相同的输出,但这是甴C++的标准规定的吗或者这是一个模糊点,但符合规范的编译器可以算出true是小于false的
该操作是根据C+ +标准明确界定的。
我们可以通过查找5.9节關系运算符的说明:
操作数必须有算数类型、枚举类型、或指针类型又或是键入的std :: nullptr_t。该操作符<(小于)>(大于),<=(小于或等于)囷> =(大于或等于)所有产生的结果均为false或true。结果为布尔型
而布尔变量是在3.9.1基本类型中的算数类型。
并且积分和浮点类型统称为算术类型
此外,true和false是2.14.6布尔文字量中的布尔文字量:
回到5.9节来更深层地理解关系操作符的机制它说:
通常的算数转化是在算数或枚举类型的操作數下执行的。
通常的算数转化在第五节中提及它说:
否则整形提升(4.5)应该在两个操作数上执行,
通过这样的规则会变成: