bool 类型数据比较的问题

本文探讨了在Visual Studio 2005和2010版本中,(bool)2==true这样的布尔值比较表达式实际上返回的是false,而非预期的true。此现象揭示了在VS中进行布尔类型间相等比较时,似乎采用了整型数值进行比较,这可能导致程序逻辑错误。
最近发现一个绝大部分人没注意过的可能引起程序错误的问题,在vs2005和vs2010下测试过,请看下图:

大部分人会理所当然的认为(bool)2 == true这个表达式的值是true, 但在vs里面,bool 数据之间的相等比较,似乎用了int 数值。也就是说(bool)2 == (bool)1会返回false,虽然(bool)2和(bool)1都是true!
这个是工作之中碰到的一个case,记录一下。
bool 数据类型即布尔类型,用于表示逻辑上的真与假。 在 Python 中,可使用 `bool()` 函数将其他数据类型转换为布尔类型。像整数 100、浮点数 3.12、字符串 "hello"、非空列表 `[12, 34, 7]`、非空元组 `(32, 45, 67)`、非空字典 `{"name":"三哥","age":18}` 转换为布尔值时为 `True`;而整数 0、空字符串(包括 `''`、`""`)、空列表 `[]`、空元组 `()`、空字典 `{}` 以及 `None` 转换后为 `False`。示例代码如下: ```python print(bool(100)) # True print(bool(3.12)) # True print(bool(0)) # False print(bool("hello")) # True print(bool('')) # False print(bool("")) # False print(bool(' ')) # True print(bool([12,34,7])) # True print(bool([])) # False print(bool((32,45,67))) # True print(bool({"name":"三哥","age":18})) # True print(bool(())) # False print(bool({})) # False print(bool(None)) # False ``` 在 C 语言里,C99 标准引入了新关键字 `_Bool` 作为布尔类型。该类型占 1 个字节,给其变量赋任何非 0 整数值时,值都为 1,这表明它并非其他整数类型的别名 [^2]。 在 JavaScript 中,bool 值只能为 `true` 和 `false`,为了方便理解,可通过代码将其转换为其他内容。例如以下代码可将 `true` 转换为“有效”,`false` 转换为“无效”: ```javascript function State(data) { var ProgreState = data.ProgreState; var State = ""; if (ProgreState === true) { State = "有效"; } else { State = "无效"; } return State; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值