您可以在C ++中使用
!
操作员吗?例如:int
是的。对于积分类型,
!
So
true
在这里意味着false
。
这种情况是将值转换为
!b
的一种特殊情况。可以将b == 0
视为bool
!b
的“真相”是什么。在C ++中,算术类型,指针类型和枚举可以转换为
!((bool)b)
。当值为0或null时,结果为
b
,否则为
bool
(C ++§4.1.2)。
课程自定义类甚至可以超载
false
或可以转换为bool>,以允许其类。例如,
true
已超载operator!
和
operator
检查失败限制,以便习语像!b
<
可以使用
(但是您的代码
std::stream
只是神秘的。)在C上,在C(C ++基于)中没有布尔类型。取而代之的是,将值“ true”分配给任何非零值,并且将值“ false”分配给了评估为零的任何内容。这种行为仍然存在于C ++中。因此,对于and,表达式
operator!
表示“operator void*
不正确”,这是“不是non-ny-Zero”,即,如果
while (std::cin >> x) { // <-- conversion to bool needed here
...
为零,则是真的。
您可以,
!( a > b && b <= c) || a > c && !b
等于int x
对于非零值,INT的测试是正确的,对于零值是false的,因此对于零值而言,对于零值不正确,对于非零值,则不正确。构建
!x
操作员将其论点转换为x
。该标准指定存在从任何算术类型(x
x
,....
!b
,(b == 0)
...)的转换。如果源值为0,则结果为!
bool