|
1
19
对一切真理都是平等的。 |
|
|
2
10
然而,一些 不良用途 bool变量的定义可能导致“未定义”的行为,可能看起来既不正确也不错误。例如,从整数读取未初始化的自动变量或直接内存副本的值。
在Visual Studio 9上,它显示:
|
|
|
3
8
是的,正如其他人所说的,在C++中,布尔可以被比较。你可能在想你从C。由于C没有布尔类型,布尔表示为整数。在布尔上下文中,任何非零整数都为真。但是,它们可能具有不同的位模式,因此不相等。所以C语言中的规则不是比较布尔值。
|
|
|
4
2
将整数值指定给布尔对象(或使用整数值初始化布尔对象)时,它会隐式转换为
当然,一些编译器可能会采取“懒惰”的方法,保留多个不同的“真”,确保它们在比较时“都是平等的”,但我怀疑这是一种合理/可行的方法。 换句话说,在一个合理的实现中,您不仅应该期望您的比较是正确的,而且应该期望一个更强大的比较也是正确的:
语言并不能保证这一点,但在现实生活中,它确实很好地描述了情况的物理方面。 |
|
5
1
|
|
|
6
1
在C++中,
在C89中,要返回到我想返回的地方,任何零值(任何指针或数字类型)都是false,其他任何值都是true。这意味着真实值不一定彼此相等。
C89伪值也有可能比较不相等,尽管它们在我使用过的每个实现中都会相等。空指针值是指针值的常量整数零转换。转换为指针值的非常量值0可能不是空指针(也有一些系统,其中空指针并非都是0位)。所以,,
然而,在C89中,所有打算返回布尔值的操作(如
|
|
|
7
0
想象一下: 有一个函数keyPressed(),该函数在未按下键时返回0,即按下键时的键数。 您在循环中编写了一个简单的开关:
现在你的公司在设备中引入了常开触发器,你需要一个pref。
突然间,只有1号键起作用了。 |
|
|
8
0
我已经阅读了所有这些关于为什么真是真以及为什么两个布尔变量可以用
以我为例,,
没有使用任何花哨的方法来设置
我的结论是,根据编译器的不同,两个布尔变量不能可靠地进行相等性比较。我使用微软Visual C++ 2005,版本0.0.50727.4039。
结语:我用表达式替换了代码中的布尔比较,
|
|
|
ridiculous_fish · std::是否保证短路? 4 年前 |
|
|
Hilde Schneider · php对我的if条件有问题 8 年前 |
|
|
user8188120 · 熊猫用np标记时间戳。其中比较 8 年前 |
|
|
Jarek · 与循环python数据帧中的下一个/上一个值进行比较 8 年前 |
|
|
vato · Bash脚本:测试浮点数是否在包括负数在内的特定范围内 8 年前 |