【问题标题】:What do these operators do in C [closed]这些运算符在 C 中做了什么 [关闭]
【发布时间】:2013-09-27 02:11:09
【问题描述】:

我对 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”语句时发生了什么。有人可以向我解释一下吗?

【问题讨论】:

  • 如果您知道运算符的含义,那么您就知道它们具有真值,对吗?并且if 语句将检查真值,如果为真,则执行以下语句或块。 (注意:C 中的数字如果非零,则其真值为“真”,如果为零,则其真值为“假”。)
  • 这些是布尔运算符。我建议编写一个小应用程序来处理不同的表达式和不同的输入值
  • 这个问题似乎是题外话,因为 OP 没有做任何基础研究
  • 如果你不知道他们在做什么,你就不知道他们的意思......
  • @mbratch 意思是“或”,我现在明白了。谢谢。

标签: c operators


【解决方案1】:

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

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

以下是您的代码 sn-p 中三个运算符的真值表:

!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

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

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

【讨论】:

  • 我怎么知道它们是真还是假?
  • 查看答案顶部的两个要点:-)
  • 重读您的回答后,我正要编辑我的评论。谢谢!这就是我要问的! :D
【解决方案2】:

他们只是普通的操作员:

|| = 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

非常基本的东西!

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 2013-02-18
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      相关资源
      最近更新 更多