#include <stdio.h>
int main()
{
int i;
i=1;
printf("%d ",!i);
i=5;
printf("%d ",!i);
i=0;
printf("%d\n",!i);
return 0;
}
我在 C 中得到以下输出:0 0 1
输出背后的逻辑是什么?
#include <stdio.h>
int main()
{
int i;
i=1;
printf("%d ",!i);
i=5;
printf("%d ",!i);
i=0;
printf("%d\n",!i);
return 0;
}
我在 C 中得到以下输出:0 0 1
输出背后的逻辑是什么?
In C, any non zero value is considered to be a true value. So taking the logical negation with !
converts it to 0
. The logical negation of 0
is 1
.
在 C 中,布尔值是整数,其中 0 是false
,任何其他值是true
。
!
不是(如您所知),因此它将任何非 0 的值变为 0,并将 0 变为 1。
i
is used like a boolean value:
i != 0
, then !i == 0
.i == 0
, then !i == 1
.“逻辑”是什么意思?
操作员的具体行为!
?它由语言标准定义。它产生0
非零参数。1
对于零论点。这就是它的定义方式。
这种定义背后的理由是什么?好吧,它应该实现该logical-not
行为。从历史上看,在 C 语言中,逻辑“假”由零整数值表示,而所有非零都被解释为逻辑“真”。所以,这就是你在实验中观察到的。当!
运算符(或 C 中的任何其他逻辑运算符)必须生成“真”结果时,它使用它1
来表示它,而不仅仅是一些任意的非零值。
!
是一个布尔运算符,它将给定的输入反转,从真到假,从假到真。真是任何不为零的东西。假是零。因此,当您not
ted1
或时5
,您反转一个真值,它打印 false 的整数值 0。接下来,当您反转一个 false 值时,它打印 true 的整数值(默认 1)
您正在执行布尔运算。这 '!' 不是人们通常认为的逆变器。如果您正在寻找逆变器,请使用“~”。