false和FALSE有什么区别?
|
在许多程序中,我看到带有标识符“ 0”和“ 1”的语句。它们在C ++上下文中有什么区别吗?
同样在某些程序中,我看到了
bool
和某个地方BOOL
。两者之间有什么区别?
谁能向我解释这些标识符之间的区别?谢谢。
没有找到相关结果
已邀请:
6 个回复
扦帽次杏
,则
被#定义为0。
被#定义为1。它不是布尔类型,而是整数类型。 Windows还定义了类型
,它实际上是一个整数类型,旨在容纳值
和
。
中相关代码的部分如下所示:
Windows和所有原始Windows应用程序一样,最初都是用C编写的。当时,C没有标准定义的布尔类型。相反,开发人员被迫定义自己的布尔常量。为了防止可能造成的混乱,Microsoft决定了将用于所有Windows应用程序的标准。 如果您正在编写Windows应用程序,则可能仍需要使用
和
标识符。
中定义的几个函数要么接受类型为
的布尔参数(实际上是整数!),要么返回这种类型的值。如果强制将C ++强制为语言标准中定义的布尔类型,则可能会抱怨。为了保持一致性,我在所有对Windows API函数的调用中都使用了旧的标识符,并且在我自己编写的所有方法中,现在都由标准定义了
和
关键字。 确实没有理由不使用
中定义的
。但是,您不应像其他人所提到的那样,在专有的头文件中自己定义它,因为不能保证该定义会随着时间的推移保持不变。这可能会导致一些非常愚蠢的错误,这种错误有资格出现在Daily WTF中。 Mat的答案是100%正确的,因为C或C ++标准都没有定义
或
。但是,它们由Windows API严格定义,并保证不会更改。使用它们不会产生真正的跨平台,严格符合标准的C ++代码,但这在编写Windows应用程序时很少担心,因为在
中调用任何其他函数都不会。
bab
。
和
被称为\“布尔文字\”,并且是C ++中的关键字。 有时将“ 0”定义为宏。您不能依靠它存在于符合标准的环境中,因为它不是标准的一部分。 换句话说,以下程序是有效的“ 28”:
它将按预期打印
。
绝对不是特权符号。
呸溉
眠缝
是C ++关键字。 C ++标准未定义FALSE。但是大多数编译器都将FALSE定义为值为0的预处理器宏。
俺呵誓放胳
甲车劲
与
进行比较。采用