![]() |
1
127
对。铸件是多余的。在你的表达中:
整体提升应用,bool值将提升为
参考:4.7[conv.integral]/4:如果源类型为
|
![]() |
2
18
查尔斯·贝利的回答是正确的。C++标准的确切措辞是(4.7×4):“如果源类型是BoL,则将false值转换为0,将值TRUE转换为1。” 编辑:我看到他也添加了参考资料--如果我不分心忘记的话,我会很快删除这个…
edit2:同样,可能值得注意的是,虽然布尔值本身总是转换为零或一,但一些函数(尤其是从C标准库)返回的值“基本上是布尔值”,但表示为
如果你把它投到
|
![]() |
3
7
根据标准,你应该安全地接受这个假设。C++
要注意的是混合
许多现代编译器实际上会对任何试图从中隐式强制转换的代码发出警告。
|
![]() |
4
4
我发现不同的编译器在true上返回不同的结果。我还发现,比较bool和bool,而不是int,几乎总是更好的方法。随着程序的发展,这些int会随着时间的推移而改变值,如果假设为1,则代码中其他地方的不相关更改会咬到它们。 |
![]() |
5
-9
不,在编译器中,true可以是任意的。一些使用1,一些使用-1(所有位集,有符号var),其他编译器可能使用不同的值。即使该值是标准化的,也不是所有编译器都可以遵循该标准。 但是,当所有位都清除时,则为假,这只发生在数值0上。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |