布尔变量可以取值为2吗

Hyy_777 2008-11-20 05:18:39
在MFC中 定义了 BOOL BSelect;

然后在后面的程序中有
if (*dwDataBuf == 0x55)
BSelect =1; //************************55为P板,
if (*dwDataBuf == 0xaa)
BSelect =2; //************************aa为PS板

布尔变量不是只能是0或1,或者是TURE或FALSE吗》??

怎么可以取2呢
...全文
819 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Learn-anything 2008-11-21
  • 打赏
  • 举报
回复
一、
1、类型不同
BOOL为int型
bool为布尔型
2、长度不同
bool只有一个字节
BOOL长度视实际环境来定,一般可认为是4个字节
3、取值不同
bool取值false和true,是0和1的区别
BOOL取值FALSE和TRUE,是0和非0的区别
二:
bool是标准C++数据类型,可取值true和false。单独占一个字节,
如果数个bool对象列在一起,可能会各占一个bit,这取决于编译器。

BOOL是微软定义的typedef int BOOL。与bool不同,它是一个三值逻辑,
TRUE/FALSE/ERROR,返回值为>0的整数为TRUE,0为FALSE,-1为ERROR。
Win32 API中很多返回值为BOOL的函数都是三值逻辑。比如GetMessage().
三:
大BOOL和小bool之间的区别:
1、类型不同
BOOL为int型
bool为布尔型
2、长度不同
bool只有一个字节
BOOL长度视实际环境来定,一般可认为是4个字节
3、取值不同
bool取值false和true,是0和1的区别
BOOL取值FALSE和TRUE,是0和非0的区别
4、例子
bool x=3; //告警
bool x=1; //正确
BOOL x=3; //正确
BOOL x=3.3; //告警
注:windows为了兼容问题定义的基础变量。
typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef float FLOAT;
typedef FLOAT *PFLOAT;
typedef BOOL near *PBOOL;
typedef BOOL far *LPBOOL;
typedef BYTE near *PBYTE;
typedef BYTE far *LPBYTE;
typedef int near *PINT;
typedef int far *LPINT;
hucailai 2008-11-21
  • 打赏
  • 举报
回复
typedef int BOOL;
  • 打赏
  • 举报
回复
BOOL = int 取是可以的,想限制的话用bool只能取 0跟1
ilovedrv 2008-11-21
  • 打赏
  • 举报
回复
建议楼主好好看看c和c++的语法关键字,但凡之外的类型,都是微软自己搞的,不利于移植,除非必要,坚决不用

如果你要表达是与否的逻辑判断,用bool表达,为一个字节

如果要表达几种结果,用int类型,或者定一个enum

hustzcj 2008-11-21
  • 打赏
  • 举报
回复
学习了。。
LIUMQX 2008-11-21
  • 打赏
  • 举报
回复
非0数都为TRUE或1.
datacodecat 2008-11-21
  • 打赏
  • 举报
回复
BOOL 和bool 有什么本质区别吗?
enihs 2008-11-21
  • 打赏
  • 举报
回复
xue xi
xinglsm 2008-11-20
  • 打赏
  • 举报
回复
MFC里大写的东西大都重新定义的,觉得奇怪就进去看一下定义就好了
Just4life 2008-11-20
  • 打赏
  • 举报
回复
看看BOOL类型的声明,像一楼说的,就是可以取非0值了
一条晚起的虫 2008-11-20
  • 打赏
  • 举报
回复
typedef int BOOL
那个bool就不行了
用户 昵称 2008-11-20
  • 打赏
  • 举报
回复
BOOL是整型,取什么都可以。
yuyunliuhen 2008-11-20
  • 打赏
  • 举报
回复
0为false,非0为true
华亭真人 2008-11-20
  • 打赏
  • 举报
回复
BOOL 不是布尔变量
而且对布尔值来说,0为false,非零为true;
yuhudie203 2008-11-20
  • 打赏
  • 举报
回复
取2是非0为TRUE
0为FALSE
  • 打赏
  • 举报
回复
BOOL
bool
tianya888 2008-11-20
  • 打赏
  • 举报
回复
谁说小于0的就是FALSE了。 只有0才是FALSE
ok1234567 2008-11-20
  • 打赏
  • 举报
回复
bool 一字节
BOOL 四字节

非零值定义为真
零至定义为假

其取值范围与1字节的256分量和4字节的4.3G分量相同:)
当然可以赋值2,3,-100...
闪破风浪 2008-11-20
  • 打赏
  • 举报
回复
编译器会认为大于等于1的都为True
小于等于0的都为False
fffanpei 2008-11-20
  • 打赏
  • 举报
回复
1楼太强了 我也学习下
加载更多回复(1)

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧