我正在学习 C++。我的背景是:.NET 和 VB6。
我对以下网页关于 bool 值的内容很感兴趣:http://msdn.microsoft.com/en-us/library/ff381404(v=vs.85).aspx即
"Despite this definition of TRUE, however, most functions that return a BOOL type can return any non-zero value to indicate Boolean truth. Therefore, you should always write this:
// Right way.
BOOL result = SomeFunctionThatReturnsBoolean();
if (result)
{
...
}
"
这是否也适用于 VB6,即是否存在以下问题:If BooleanValue = True Then
?
最佳答案
Windows API 设计用于 C 程序。直到 C99 才具有 bool 类型。并且仍然不完全,例如,C99 从未被 Microsoft 编译器实现。因此,他们必须想出一种解决方法,一种与 C 编译器处理逻辑值的方式高度兼容的方法。一个 int,其中 0 为假,其他为真。因此建议。
VB6 有专门的 bool 类型和字面值 True 和 False 的关键字,因此不会出现相同的问题。然而,您仍然可能因编写不当的 COM 服务器而陷入困境。 True 的基础整数值为 -1,与许多其他语言对逻辑 bool 类型的实现高度不兼容。包括 C。VB6 很奇怪是有充分理由的,它的 And 和 Or 运算符不区分逻辑和算术和/或。通过使 True 等于 -1 和 False 等于 0 没有区别。当 COM 服务器返回 1 来指示 true 而不是 VARIANT_TRUE 时,就会出现问题。
但最重要的是,对于许多程序员来说,编写 If booleanVariable = True Then
是丑陋的,而且是钉在黑板上的。只需编写 If booleanVariable Then
即可完成。
关于c++ - VB6 和 C++ bool 文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8693520/