-4

我对 C 很陌生,我正在浏览一些示例代码,我不确定 if 语句中的这些运算符是“询问”的,可以这么说。

这是代码:

int main(void){

    int a = 99;

    int b = 0;

    int c = 74;

    if( a || b )
      printf("first\n");

    else
      printf("second\n");

    if( a && c )
      printf("third\n");

    else
      printf("fourth\n");

    if( !a )
      printf("fifth\n");

    else
      printf("sixth\n");

    if( (a && b) || c )
      printf("seventh\n");

    else
      printf("eighth\n");

    if( !c || !b )
      printf("nineth\n");

    else
      printf("tenth\n");
}

我知道操作员的意思,我只是不明白当他们通过“if”语句时发生了什么。有人可以向我解释一下吗?

4

3 回答 3

1

回答这个问题的关键是了解 C 如何处理参与逻辑运算的整数:

  • 零被视为FALSE
  • 除零以外的所有值都被视为TRUE

以下是代码片段中三个运算符的真值表:

!FALSE -> TRUE
!TRUE  -> FALSE

FALSE || FALSE -> FALSE
FALSE || TRUE  -> TRUE
TRUE  || FALSE -> TRUE
TRUE  || TRUE  -> TRUE

FALSE && FALSE -> FALSE
FALSE && TRUE  -> FALSE
TRUE  && FALSE -> FALSE
TRUE  && TRUE  -> TRUE

当在不带括号的表达式中使用多个运算符时,一元!在二元&&or之前应用||

现在您有足够的信息来自己计算输出。

于 2013-09-27T02:15:50.447 回答
0

他们只是普通的运营商:

|| = or
&& = and
! = not

所以...

if( a || b )
  printf("first\n");

是说...

if a or b then print "first"

和...

if ( !a )

是...

if not a

相当于:

if a is equal to 0 or NULL

真的很基础的东西!

于 2013-09-27T02:16:06.700 回答
0

如果您使用的是 bool 类型的变量,那么了解布尔运算符可能会更容易。我发现布尔检查在处理整数时不太有用,因为将数字视为真或假的情况不太常见。对于整数,您通常会考虑它们的数值,这在布尔逻辑中意义不大

于 2013-09-27T02:24:16.037 回答