В C++ или <stdbool.h>
из C99, как оператор меньше -, чем <
, определен для логических значений?
В качестве альтернативы объясните поведение этого кода:
#ifndef __cplusplus
#include <stdbool.h>
#endif
#include <stdio.h>
int main() {
bool b = -1;
if(b < true) {
printf("b < true\n");
}
if(b < false) {
printf("b < false\n");
}
if(true < false) {
printf("true < false\n");
}
if(false < true) {
printf("false < true\n");
}
}
Под MSVC версии 10, скомпилированной как код C++, GCC 4.6.3 -ubuntu5, скомпилированной как код C, и G++ 4.6.3 -1ubuntu5, скомпилированной как код C++, все, что вы получаете, это
false < true
То есть все следующие неравенстваfalse
:
(bool)-1 < true
(bool)-1 < false
true < false
И следующееtrue
:
false < true