2013-09-27 79 views
-4

我对C非常陌生,我正在通过一些示例代码,我不确定if语句中的这些运算符是“询问”什么的,可以这么说。这些操作员在做什么C

下面是代码:

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”语句,他们要去。有人可以向我解释这个吗?

+0

如果您知道操作符的含义,那么您知道它们具有真值,对吗?并且'if'语句将检查真值,如果是,则执行以下语句或块。 (注意:如果C中的数字非零,则其真值为“真”,如果为零,则为“假”) – lurker

+0

这些是布尔运算符。我建议编写一个小应用程序来播放不同的表达式和不同的输入值 – TGH

+0

由于OP没有做任何基础研究,所以这个问题似乎是无关紧要的问题 – 2013-09-27 02:14:51

回答

1

来回答这个问题的关键是实现Ç如何对待参与逻辑运算的整数:作为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 
      

      如果在没有括号的表达式中使用多个运算符,则在二进制&&||之前应用一元!

      现在您有足够的信息来自己弄清楚输出了。

    +0

    我如何知道他们是真是假? –

    +0

    查看答案顶部的两个要点:-) – dasblinkenlight

    +0

    我在重读您的答案后即将编辑我的评论。谢谢!这就是我问的问题! :d –

    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 
    

    很基本的东西!

    0

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