【发布时间】:2012-08-10 17:03:46
【问题描述】:
在 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
【问题讨论】:
标签: c++ c boolean comparison-operators