В С++ или <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, скомпилированном как код С++, GCC 4.6.3-ubuntu5 скомпилирован как код C и g++ 4.6.3-1ubuntu5, скомпилированный как код С++, все, что вы получаете, это
false < true
Таким образом, следующие неравенства: false
:
(bool)-1 < true
(bool)-1 < false
true < false
И ниже true
:
false < true