bool
数据类型通常表示为0
(如false
)和1
(如true
)。但是,有些人说true
值可以用1
以外的值来表示。如果后面的语句为true
,则以下表达式可能不正确。
bool x = 1;
if (x==1)
Do something..
我想知道下面的语句在常用的编译器上是否能像预期的那样工作。
if () Do something..
z= 1;if (y>0.5) Do something..
发布于 2019-05-20 17:45:34
if (x==1)
没有错误。当您将布尔值转换为数值类型时,所有真值表示形式都将转换为1。
给定bool z=true
,if(z>0.5)
将为真,因为1.0大于0.5。
发布于 2019-05-20 18:32:28
bool
只有两个值,分别是true
和false
。1
和0
是整型文字,因此可以将它们转换为bool
。您必须考虑到转换在两个方向上都有效,但您不一定会得到相同的整数:
int a = 5;
bool b = a; // int -> bool conversion
int c = b; // bool -> int conversion
std::cout << a << " " c;
打印:
5 1
0
以外的任何整数值都会转换为true
,但true
始终会转换为1
。
记住这一点,您的所有示例都将按预期工作。但是,请注意,bool
的主要用途是我们可以在代码中使用true
和false
,而不必将数字作为0
和1
的特殊含义。显式总是更好,所以当你说true
时,你最好写true
而不是1
。
发布于 2021-02-24 15:58:24
这里的一个相关问题是“为什么我们甚至允许在bool
和int
之间进行比较?”
答案是向后兼容和折衷,因为C和C++过去推荐使用整数来存储布尔值。所以有很多代码
尽管有新的语言规则,
在这方面,其他语言可能更干净,但是bool
类型显然是成功的。
https://stackoverflow.com/questions/56218225
复制相似问题