C + + 规范是否定义:
换句话说,以下操作的结果是否由规范定义?
false < false
false < true
true < false
true < true
在我的设置中(Centos 7,gcc 4.8.2) ,下面的代码显示了我所期望的结果(考虑到 C 将 false 表示为0,将 true 表示为1的历史) :
false < false = false
false < true = true
true < false = false
true < true = false
虽然我非常肯定大部分(所有?)编译器会给出相同的输出,这是 C + + 规范规定的吗?或者是一个模糊的,但是符合规范的编译器允许判断真是小于假?
#include <iostream>
const char * s(bool a)
{
return (a ? "true" : "false");
}
void test(bool a, bool b)
{
std::cout << s(a) << " < " << s(b) << " = " << s(a < b) << std::endl;
}
int main(int argc, char* argv[])
{
test(false, false);
test(false, true);
test(true, false);
test(true, true);
return 0;
}