U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 常见问题解答 >

关于布尔类型的几个变种的解释

来源:http://www.tudoupe.com时间:2022-01-26

这个问题,一直深深地困扰着我。
我们经常看到关于布尔类型的各种定义:BOOL, VARIANT_BOOL,BOOLEAN,bool。
为什么同样一件事情,要定义这么多不同的类型。是不是觉得这个世界不够复杂?

如果用一句话概括:因为以上的每一个类型,都是为了在某个时间为某一类人群解决某一种问题。

BOOL是最为古老的类型,它的定义很简单:typedef int BOOL;
在C语言中,使用到了int来表达一个布尔类型。在Windows 1.0那个时候,C语言是用于系统编程的热门语言。

接下来是BOOLEAN。它的定义为:typedef BYTE BOOLEAN;
这个类型由OS/2 NT开发团队所创造,主要是为了重新从零开始开发一个全新的操作系统。
我们可以从这个类型的设计中,窥视原始Windows NT的设计,例如安全子系统和与驱动程序的交互。

接下来是VARIANT_BOOL,如下图所示:


这个类型主要是由Visual Basic语言开发者开发的。在VB中使用了-1来表达”true”,而使用0来表达”false”,VARIANT_BOOL类型就是用来实现这种定义。

常见的错误

当操作VT_BOOL类型的VARIANT变量时,如果你想将它设置为布尔值true,则你必须将它设置为VARIANT_TRUE。许多人都会错误地将它设置为TRUE或者true,但是它和VARIANT_TRUE不是一回事儿。如果你在脚本语言环境中这样使用,则调用方会感到困惑。
(类似的,你还应该使用VARIANT_FALSE而不是 FALSE 或 false。但在这种情况下,这三个名称都具有相同的数值。因此,操作布尔值“false”的时候,问题不是很大。)

最后是bool。这个是C++里的数据类型,它的值可以是true或者false。但是在Win32中,你可能不会经常看到它,因为Win32在设计上会考虑尽量和C语言保持兼容。

另外需要注意的是,我们所说的C语言兼容和C语言友好不是一回事儿。尽管你可以在C中开发COM组件,但是,相信我,这并不是一件好玩的事儿。

总结

反正,今天终于算是搞明白了各种布尔类型,妈妈再也不用担心了。
要是从一开始,布尔true统一使用数字1,布尔false统一使用数字0,世界该多美好。
在拓扑梅尔智慧办公平台(Topomel Box)中,我就一股脑的使用数字1和0来表达布尔类型的语义,世界瞬间就清净了。
咱弄简单点儿,它不香吗?

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《BOOL vs. VARIANT_BOOL vs. BOOLEAN vs. bool》

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息