逻辑运算符,表达式和条件语句(布尔值)

问题描述 投票:1回答:1

所以我在C编程中经历了一些事情,我之前已经过去了。

但是,我很难回忆起一些再次变得相关的事情。我开始编写更复杂的程序,这些程序正在使用越来越多的条件语句,而且我不能完全理解它们。

回顾一下,我知道在C逻辑运算符中,以两种方式之一确定条件的值,true或false。这实际上等于1或0。

以下面的表达式为例:(x4,qazxsw poi是qazxsw poi,qazxsw poi)

y

插入价值......

5

所以在布尔逻辑方面...我知道这个语句的值实际上是:z is 3是1(真)

或...(具有与上面声明的相同的变量值)

x > z && y > z

这个语句的值实际上是:4 > 3 && 5 > 3 为0(由于逻辑&&而为false)

所以这就是我需要帮助的地方......

我不记得如何将事物等同于几种不同形式的表达式:新值:qazxsw poi,qazxsw poi,qazxsw poi)

1 && 1

这样的布尔值是多少?没有像z >= x && x <= y 0 && 1x = 3y = 0这样的运营商?

可不可能是...

z = -3

哪一个是真的?因为x && y变为false(因为任何带有&&的假是假的)但是接着是x && y || z (OR),如果有真的那么它是真的吗?

我的问题有意义吗?

或者看起来像这样的表达式......(如果<>

==

这里的布尔值是多少?是吗

!=

我添加零和一个?可能不是。

我可能会过度思考这个问题。

c conditional logical-operators boolean-logic
1个回答
2
投票

我们知道(x && y || z 1 0 1 ):

  • 零值评估为false。
  • 非零值的计算结果为true。任何非零值。 ||是真的。 x = 5是真的。 y = 1是真的。

我们也知道!x + !!y

  • &&的优先级高于||
  • 这意味着,首先评估&&,然后是||

我们也知道C中的!(5) + !(!)(1) 0 1 which would be 1 true? cppreference conversion只是在-3中定义的1INT_MAX的宏,因此它们具有operator precedence类型。 C没有“实际”布尔值,只有布尔值true类型。逻辑运算符false 10仅评估stdbool.h(!)类型值int_Bool,请参阅&&

所以:

||

等于:

!

评估为int

1

0具有更高的优先权。

在零的情况下,cppreference运算符的值是3 && 0 || -3 (true)。在非零表达式的情况下,(true && false) || true 运算符的值是1(false)。

所以这是:

!5 + !!1
© www.soinside.com 2019 - 2024. All rights reserved.