If(...&&...||...)

if(age < 12) ...

if(age > 12 && age < 60) ...

if(age > 60) ...

if(age < 12 || age > 60) ...






|
|
12 60

常見錯誤: Ans
1 if(12 < age < 60) ...
數學與電腦寫法不同
改正: if(age > 12 && age < 60) ...
2 if(age < 12 || > 60) ...
欠變數名稱 age
改正: if(age < 12 || age > 60) ...
3 if(age>60); printf("...");
if中間不要加(;)分號
改正: if(age>60) printf("...");
4 if(age<12 && age>60) ...
沒可能
改正: if(age < 12 || age > 60) ...
5 if(age = 12) ...
if(12 = age) ...
賦值(age=12);比較(age==12)
改正: if(age==12) ...
6 if(age > 12 || age < 60) ...
等同: if(1) ...
改正: if(age>12 && age<60) ...
7 if(ans=='y' && ans=='n')
  puts("ok");
沒可能
改正: if(ans=='y' || ans=='n') puts("ok");
8 if(ans!='y' || ans!='n')
  puts("error");
任何輸入都正確
改正: if(ans!='y' && ans!='n') puts("error");
9 scanf("%c",&ch);
if(ch=='a'||'b'||'c'||'d')...
改正: if(ch=='a' || ch=='b' || ch=='c' || ch=='d') ...
改正: if(strchr("abcd",ch) != NULL) ...
10 do{
  printf("Continue? ");
  scanf("%c",&ans);
}while(ans='y');
就算答n,也不斷重複
改正:
do{
  printf("Continue? ");
  scanf("%c",&ans);
}while(ans=='y');
11 mm=11;
if(mm=2) max=28;
else max=31;
無論mm是什麼數值,max總是28
改正:if(mm==2) max=28;
else max=31;