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