C++ (スーパーセットではありませんが) がほとんど C から派生していることは誰もが知っています。
C++ では、演算子 <、<=、>、>=、==、および != はすべてブール型の戻り値を持ちます。ただし、C では「bool」型がなかったため、同じ演算子が 1 または 0 を返しました。
0 以外のすべての整数値は「真」として扱われ、0 は「偽」であるため、次のことを知りたいです。
C++ はまだ演算子の戻り値を 1 対 0 に制限していますか? または、これらの演算子の 1 つからの「true」は、0 でない限り、任意の 1 バイト値を返しますか?
これらの戻り値を明示的な 1 または 0 として使用すると、分岐のないビット単位の操作で役立つため、知りたいです。
ひどい例として、次の例を取り上げます。
bool timesTwo;
int value;
//...
if(timesTwo)
value << 1;
//vs
value << (int) timesTwo;