FALSE/TRUE与false/true的区别

本文详细解析了C++中FALSE/TRUE与false/true的区别,包括它们的数据类型、内存占用以及在C与C++环境中的应用。同时,对比了bool与BOOL的差异,并解释了NULL与0在C与C++中的作用。

FALSE/TRUE与false/true的区别
1.FALSE/TRUE与false/true的区别:
false/true是标准C++语言里新增的关键字,而FALSE/TRUE是通过#define定义的INT数据,主要用途
是解决程序在C与C++中环境的差异,以下是FALSE/TRUE在windef.h的定义:

#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif

也就是说FALSE/TRUE是int类型,而false/true是bool类型;所以两者不一样的,只不过
我们在使用中没有这种感觉,因为C++会帮你做隐式转换。
2.bool与BOOL内存大小的区别:
bool在C++里是占用1字节,而BOOL是int类型,int类型的大小是视具体环境而定的;所以
来说:false/true只占用1个字节,而TRUE/FALSE视具体环境而言,以下是BOOL在windef
.h中的定义:typedef int BOOL;
3.NULL与0的区别:
还是让我们看一下windef.h中NULL的定义:
#ifndef NULL
#ifdef __cplusplus//这个是指示是用C++来编译程序
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
所以说:它们没有区别,只不过在C里面会做一个强制类型转换。
BOOL和bool的区别
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()。
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;
————————————————
版权声明:本文为优快云博主「机器视觉001」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/liubing8609/article/details/70495482/

### 匹配布尔值或二进制状态的正则表达式 为了匹配布尔值或二进制状态的不同字符串形式(如 `0`、`1`、`true`、`false`、`是`、`否`),可以使用一个正则表达式,通过多个分组来匹配这些不同的形式。这种正则表达式可以通过 `|`(或)操作符来组合多个可能的匹配模式。 #### 正则表达式示例 以下是一个匹配这些字符串形式的正则表达式: ```regex ^(0|1|true|false|是|否)$ ``` #### 解释 - `^` 和 `$` 分别表示字符串的开始和结束,确保整个字符串都必须匹配指定的模式,而不是部分匹配。 - `(0|1|true|false|是|否)` 表示匹配其中任意一组字符串。`|` 是“或”操作符,表示可以选择不同的匹配项。 - `0` 和 `1` 用于匹配二进制状态。 - `true` 和 `false` 用于匹配布尔值。 - `是` 和 `否` 用于匹配中文表示的布尔值。 #### 示例代码(Python) 以下是一个使用该正则表达式进行验证的 Python 示例: ```python import re def is_boolean_value(s): pattern = r'^(0|1|true|false|是|否)$' return re.match(pattern, s) is not None test_strings = ["0", "1", "true", "false", "是", "否", "yes", "no", "abc", ""] for s in test_strings: print(f"'{s}': {is_boolean_value(s)}") ``` #### 输出示例 ``` '0': True '1': True 'true': True 'false': True '是': True '否': True 'yes': False 'no': False 'abc': False '': False ``` #### 匹配特点总结 - 该正则表达式确保字符串只能是 `0`、`1`、`true`、`false`、`是` 或 `否` 中的一个。 - 使用 `^` 和 `$` 保证整个字符串必须完全匹配,避免部分匹配的情况。 - 支持多种布尔值表示形式,适用于需要处理不同语言或格式的布尔值输入的场景[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值