我可以在整数上使用逻辑而不是操作员吗?

问题描述 投票:0回答:5

您可以在C ++中使用

!
操作员吗?例如:
int

	
是的。对于积分类型,
c++ integer logical-operators negation
5个回答
31
投票
如果操作数为零,则返回

!

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

7
投票

对于非零值,INT的测试是正确的,对于零值是false的,因此对于零值而言,对于零值不正确,对于非零值,则不正确。
    
构建
!x
操作员将其论点转换为
x
。该标准指定
存在从任何算术类型(

x

5
投票
x

,....

!b
(b == 0)
...)的转换。如果源值为0,则结果为

!

3
投票
bool


3
投票

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.