开发者

Basic Conditional Checking for IF statements in C

Can someone please explain what really 开发者_运维技巧goes on in this code ? If I put the AND statement, the message wont show if values are less than 0 or greater than 10 ... I think I must use 1 0 logic to work this out right ? I just need someone to briefly explain it please.

#include<stdio.h>
main(){

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

How is that IF statement different when AND is put :

#include<stdio.h>
main(){

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

Thanks !!


This is based on Boolean logic:

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

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

Notice how those differ when one side is true and the other is false.

Anyway, in your test:

if(num<0 && num >10)

It's not possible for a number to both be < 0 and at the same time be > 10. Because of this, you will either evaluate true && false (for negative numbers), false && false (for numbers between 0 and 10 inclusive) or false && true (for numbers larger then 10). In all those cases, the boolean logic says the answer is false.


Boolean logic.

If you use || (OR), the statement is true if ANY of the conditions are met. If you use && (AND), the statement is true ONLY if ALL of the conditions are met. SO in your second example, the statement will be true if the number is BOTH smaller than 0 AND larger than 10. Clearly there is no such number.


1) I believe you forgot some char in scanf string:

scanf("%d",&num);

2) first example will say "yay" if number is LESS THAN 0 or GREATER THAN 10

second example will never say "yay" b/c number must be LESS THAN 0 and GREATER THAN 10 simultaneously

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜