C ++仕様は以下を定義していますか?
- ブール型パラメータの「小なり」演算子の存在。
- 4つのパラメーターの順列の結果?
つまり、次の操作の結果は仕様で定義されていますか?
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 ++仕様によって規定されていますか?または、難読化されていますが、仕様に準拠したコンパイラは、trueがfalseよりも小さいと判断できますか?
#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;
}
p <= q
手段p implies q
ときp
とq
bool型です!
<=
誤って左矢印として読み取られる可能性があり、「のみの場合」(つまり、「[実質的に]が意味する」)右矢印がタイプセットまたは非公式に書かれる=>
(つまり、二重シャフトが似ている=
)ことです。 。左向き矢印は「if」として読み取られることさえありますが、これは「のみ」の右向き矢印を使用するよりもはるかに一般的ではないと思います。
std::min
するstd::vector<bool>
など&&
。