小议布尔型变量

本文探讨了C/C++中的基本布尔类型bool、微软定义的BOOL以及VARIANT中的VT_BOOL,分析了它们的内存存储和使用差异。尽管它们都表示逻辑状态,但bool占用1字节,BOOL作为长整型在32位系统中占用4字节,VT_BOOL在VARIANT中占用2字节。在使用时,应注意避免直接与0或1进行比较,以防止潜在错误。
摘要由CSDN通过智能技术生成

    数据类型是程序中最基础的知识,但是很多时候我们往往停留在会用的层面上,并没有深究。在实际应用中,由于 typedef 的存在以及自定义数据结构的自由,使得数据类型的队伍扩大了许多,也出现了一些功能相同或者相似,却有不同的内在的数据变量,布尔类型便是其中之一。

    布尔型变量是有两种逻辑状态的变量,它有两个值:真和假,但它并没有在内存里存入“真”、“假”、“true”、“false”这样的字符串,而是我们熟知的整数。说到这里,有同学会说,是 1 和 0 嘛,这很简单。不错,在我们常年的编程经验中,10 似乎就是 true false 的代名词,但是如果认为所有的“真假”都是用 10 表示,那又是太片面了。在我们的程序设计中,经常会用到很多库,若是所有的库使用的布尔类型都是 C/C++ 里面的基础变量类型 bool,那我下面说的纯粹就是废话了。实际情况是,除了基础变量类型 bool 外,微软还定义了 BOOL, 为了支持组件、支持跨语言工作而诞生的变体型变量 VARIANT 里面还定义了 VT_BOOL,这是常用的几种布尔类型变量,他们有什么区别呢?

    一、bool

    首先说说基础的布尔类型 boolbool 是标准 C/C++ 类型,它的值是 true 或者 falsetrue false 并不是某某库做的 define,他们是 C/C++ 的关键字,是内置的布尔变量值。但这只是表面上的,究竟他们在内存里存储的数据什么样的呢?大家可以用 sizeof & 看看 bool 变量占用的字节数以及内存中的地址(千万别说有人不会……)。我们可以看到, bool 变量占用了 1 个字节的内存,当值为 false 的时候,实际上存储的是 0x00, 当值为 true 的时候,存储的是 0x01。这不就是 0 1 吗?!是的,但是别急,我们继续往下看。

    二、BOOL

    C/C++ 程序员由于使用的操作系统不同,便分了阵营,不得不承认现阶段微

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值