C中IF语句的基本条件检查

时间:2010-06-02 23:03:55

标签: c conditional if-statement

有人可以解释一下这段代码到底发生了什么吗? 如果我把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");
}

谢谢!

3 个答案:

答案 0 :(得分:2)

这是基于布尔逻辑:

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)

两个数字都不可能< 0且同时为> 10。因此,您要评估true && false(对于负数),false && false(对于0到10之间的数字)或false && true(对于大于10的数字)。在所有这些情况下,布尔逻辑表示答案是false

答案 1 :(得分:2)

布尔逻辑。

如果你使用|| (或),如果满足任何条件,则该陈述为真。如果你使用&amp;&amp; (AND),只有满足所有条件时,该陈述才属实。在你的第二个例子中,如果数字小于0且大于10,则该语句将为真。显然没有这样的数字。

答案 2 :(得分:2)

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

scanf("%d",&num);

2)如果数字少于0 大于10

,第一个例子会说“yay”

第二个例子永远不会说“yay”b / c号码必须少于0 大于10 同时

相关问题