逻辑运算符、表达式和条件语句(布尔值)
Logical Operators, Expressions & Condition Statements (boolean values)
所以我要复习 C 编程中的一些内容,我之前已经复习过。
但是,我很难回忆起一些再次变得相关的事情。我开始编写更复杂的程序,这些程序使用越来越多的条件语句,但我无法完全理解它们。
总而言之,我知道在 C 语言中,逻辑运算符以真或假两种方式之一确定条件的值。这实际上等于 1 或 0。
以下面的表达式为例:
(如果 x
是 4
,y
是 5
,z is 3
)
x > z && y > z
插入值...
4 > 3 && 5 > 3
所以就布尔逻辑而言...
我知道这句话的价值实际上是:
1 && 1
即 1(真)
或者...
(与上面声明的变量值相同)
z >= x && x <= y
这条语句的实际价值是:
0 && 1
为 0(由于逻辑 && 而为假)
这就是我需要帮助的地方...
我不记得如何用几种不同的表达形式来等同事物,例如:
新值:x = 3
、y = 0
、z = -3
)
x && y || z
这样的布尔值是多少?没有像 <
、>
、==
和 !=
?
这样的运算符
会不会是...
x && y || z
1 0 1
哪个是 1 为真?因为 x && y 变成了假(因为任何带有 && 的假都是假的)但是它后面跟着 ||
(或),如果是真的,它就是真的?
我的问题有道理吗?
或者看起来像这样的表达式呢...
(if x = 5
, y = 1
)
!x + !!y
这里的布尔值是多少?是吗
!(5) + !(!)(1)
0 1 which would be 1 true?
我要加零和一吗?应该不是。
我可能想多了。
我们知道 (cppreference conversion):
- 零值计算为假。
- 非零值计算结果为真。任何非零值。
-3
是真的。 1
是真的。 INT_MAX
是真的。
我们也知道 operator precedence:
- && 的优先级高于 ||
- 这意味着,首先评估 &&,然后评估 ||
我们也知道C语言中的true
和false
只是stdbool.h
, so they have the int
type. C does not has "real" boolean values, only boolean _Bool
type. The logical operators &&
||
and !
evaluate to int
(!) type values 1
or 0
only, see cppreference.
中定义的1
和0
的宏
所以:
3 && 0 || -3
等于:
(true && false) || true
计算结果为 1
。
!5 + !!1
!
具有更高的优先级。
如果为零,!
运算符的值是 1
(真)。在非零表达式的情况下,!
运算符的值为 0
(假)。
所以是:
(! true) + (! (! true) )
false + true
0 + 1
1
所以我要复习 C 编程中的一些内容,我之前已经复习过。
但是,我很难回忆起一些再次变得相关的事情。我开始编写更复杂的程序,这些程序使用越来越多的条件语句,但我无法完全理解它们。
总而言之,我知道在 C 语言中,逻辑运算符以真或假两种方式之一确定条件的值。这实际上等于 1 或 0。
以下面的表达式为例:
(如果 x
是 4
,y
是 5
,z is 3
)
x > z && y > z
插入值...
4 > 3 && 5 > 3
所以就布尔逻辑而言...
我知道这句话的价值实际上是:
1 && 1
即 1(真)
或者... (与上面声明的变量值相同)
z >= x && x <= y
这条语句的实际价值是:
0 && 1
为 0(由于逻辑 && 而为假)
这就是我需要帮助的地方...
我不记得如何用几种不同的表达形式来等同事物,例如:
新值:x = 3
、y = 0
、z = -3
)
x && y || z
这样的布尔值是多少?没有像 <
、>
、==
和 !=
?
会不会是...
x && y || z
1 0 1
哪个是 1 为真?因为 x && y 变成了假(因为任何带有 && 的假都是假的)但是它后面跟着 ||
(或),如果是真的,它就是真的?
我的问题有道理吗?
或者看起来像这样的表达式呢...
(if x = 5
, y = 1
)
!x + !!y
这里的布尔值是多少?是吗
!(5) + !(!)(1)
0 1 which would be 1 true?
我要加零和一吗?应该不是。
我可能想多了。
我们知道 (cppreference conversion):
- 零值计算为假。
- 非零值计算结果为真。任何非零值。
-3
是真的。1
是真的。INT_MAX
是真的。
我们也知道 operator precedence:
- && 的优先级高于 ||
- 这意味着,首先评估 &&,然后评估 ||
我们也知道C语言中的true
和false
只是stdbool.h
, so they have the int
type. C does not has "real" boolean values, only boolean _Bool
type. The logical operators &&
||
and !
evaluate to int
(!) type values 1
or 0
only, see cppreference.
1
和0
的宏
所以:
3 && 0 || -3
等于:
(true && false) || true
计算结果为 1
。
!5 + !!1
!
具有更高的优先级。
如果为零,!
运算符的值是 1
(真)。在非零表达式的情况下,!
运算符的值为 0
(假)。
所以是:
(! true) + (! (! true) )
false + true
0 + 1
1