【问题标题】:Basic Conditional Checking for IF statements in CC 中 IF 语句的基本条件检查
【发布时间】:2010-06-03 07:07:32
【问题描述】:

有人能解释一下这段代码到底发生了什么吗? 如果我放置 AND 语句,则消息不会显示值是小于 0 还是大于 10 ...我认为我必须使用 1 0 逻辑来解决这个问题,对吗? 我只需要有人简单解释一下。

#include<stdio.h>
main(){

  puts("enter number");
  scanf("%d",num);
  if(num<0 || num >10)
     puts("yay");
}

当放置 AND 时,IF 语句有何不同:

#include<stdio.h>
main(){

  puts("enter number");
  scanf("%d",num);
  if(num<0 && num >10)
     puts("yay");
}

谢谢!!

【问题讨论】:

  • (a) 您需要声明num 并且(b) 您需要将指向num 的指针传递给scanf(),而不是num 本身。您可能还可以使用介绍性计算机科学文本。
  • 你能想出一个既小于零又大于十的数吗?
  • @James,是的,我知道,感谢您指出,我只是在这里写了一个随机程序..所以错过了那些..@walky,不,但我正在寻找如下所述的解释,感谢您的回复

标签: c conditional if-statement


【解决方案1】:

这是基于布尔逻辑的:

true || true -> true
true || false -> true
false || true -> true
false || false -> false

true && true -> true
true && false -> false
false && true -> false
false && false -> false

请注意当一侧为真而另一侧为假时它们有何不同。

无论如何,在你的测试中:

if(num<0 && num >10)

一个数字不可能同时是&lt; 0&gt; 10。因此,您将评估 true &amp;&amp; false(对于负数)、false &amp;&amp; false(对于 0 到 10 之间的数字)或 false &amp;&amp; true(对于大于 10 的数字)。在所有这些情况下,布尔逻辑表示答案是false

【讨论】:

    【解决方案2】:

    布尔逻辑。

    如果你使用 || (OR),如果满足任何条件,则该语句为真。如果您使用 && (AND),则仅当满足所有条件时,该语句才为真。所以在您的第二个示例中,如果数字既小于 0 又大于 10,则该语句将成立。显然没有这样的数字。

    【讨论】:

      【解决方案3】:

      1) 我相信你在 scanf 字符串中忘记了一些字符:

      scanf("%d",&num);
      

      2) 如果数字小于 0 大于 10,第一个示例会说“耶”

      第二个例子永远不会说“yay” b/c 数字必须小于 0 GREATER THAN 10 同时

      【讨论】:

      • 谢谢你的信息,是的,我只是在这里输入一个随机程序......谢谢!
      猜你喜欢
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 2021-09-29
      相关资源
      最近更新 更多