这些操作符在C中做什么

这些操作符在C中做什么,c,operators,C,Operators,我是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");

我是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");
}

我知道操作符的意思,我只是不明白当他们通过“如果”语句时发生了什么。有人能给我解释一下吗?

回答这个问题的关键是实现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
&& = and
! = not
所以

他说

if a or b then print "first"
而且

if ( !a )

相当于:

if a is equal to 0 or NULL

非常基本的东西

如果使用bool类型的变量,可能更容易了解布尔运算符。我发现布尔检查在处理整数时不太有用,因为将数字视为真或假的情况不太常见。对于int,你通常认为它们的数值在布尔逻辑

中意义不大,如果你知道运算符的含义,那么你知道它们有一个真值,对吧?而
if
语句将检查真值,如果真值为真,则执行以下语句或块。(注意:C中的数字如果不为零,则真值为“真”,如果为零,则真值为“假”)。这些是布尔运算符。我建议编写一个小应用程序来处理不同的表达式和不同的输入值。这个问题似乎离题了,因为OP没有做任何基本的研究。如果你不知道他们在做什么,你不知道他们的意思…@mbrach它的意思是“或”,我现在明白了。谢谢。我怎么知道它们是真是假呢?请看答案顶部的两个要点:-)在我重读你的答案后,我正要编辑我的评论。非常感谢。这就是我要问的!:D
if not a
if a is equal to 0 or NULL