在 C++ 或C99 下,如何为布尔值定义<stdbool.h>
小于运算符?<
或者,解释此代码的行为:
#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