所以我要讲的是C编程中的一些内容,这是我以前讨论过的。
但是,我很难回忆起一些再次变得相关的事情。我开始编写更复杂的程序,这些程序使用越来越多的条件语句,但我无法完全理解它们。
总而言之,我知道在C语言中,逻辑运算符可以通过两种方法之一来确定条件的值,即true或false。真正等于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(由于逻辑&&,为false)
所以这是我需要帮助的地方...
我不记得如何用几种不同形式的表达式将事物等同起来:
新值:x = 3
,y = 0
,z = -3
)
x && y || z
像这样的布尔值是什么?是否没有<
,>
,==
和!=
之类的运算符?
会不会...
x && y || z
1 0 1
1为真吗?因为x && y变为假(因为&&的任何假为假),但是之后跟着||
(或),如果为true,则为true?
我的问题有意义吗?
或者像这样的表达式呢...
(如果为x = 5
,y = 1
)
!x + !!y
这里的布尔值是什么?是
!(5) + !(!)(1)
0 1 which would be 1 true?
我是否将零和一相加?可能不是。
我可能对此太想了。
答案 0 :(得分:2)
我们知道(cppreference conversion):
-3
是正确的。 1
是正确的。 INT_MAX
是正确的。我们也了解operator precedence:
我们还知道C中的true
和false
只是stdbool.h
中定义的1
和0
的宏,因此它们有{{1 }}类型。 C没有“真实的”布尔值,只有布尔int
类型。逻辑运算符_Bool
&&
和||
的求值方式为!
(!)类型值int
或1
,请参见cppreference
所以:
0
等于:
3 && 0 || -3
其值为(true && false) || true
。
1
!5 + !!1
的优先级更高。
在为零的情况下,!
运算符的值为!
(真)。如果表达式为非零值,则1
运算符的值为!
(假)。
就是这样:
0