C語句中涉及到條件判斷時的情況分析
C語言中的很多語句在執行過程中會涉及到條件的判斷,如 if語句、switch語句、while語句、for語句等。而作爲條件載體的可以是常/變量、算術表達式、關係表達式、邏輯表達式和賦值表達式。這些載體的值(即0或非0)即代表着命題的真假,進而決定了語句是否執行。
注意事項1.
作爲判斷條件的語句,會影響變量的值
例1
#include<stdio.h>
void main()
{int a=1;
if(a++);
printf ("%d",a);
}
注意事項2.
在邏輯表達式的求解中,並不是所有的邏輯運算符都被執行只是在必須執行下一個邏輯運算符才能求出表達式的解時,才執行該運算符。
1. a&&b&&c型
2. a||b||c型
例2
#include<stdio.h>
void main()
{int a=0,b=1,c=2;
if(c++||a&&b++);
printf("%d%d%d",a,b,c);
}
注意事項3.
Switch語句中的條件判斷問題:當以變量的值作判斷條件時,if語句中以其值是否爲0決定語句的執行情況,而在switch語句中即使switch後的表達式值爲0其分支也可能執行(只要包括case0),另外每個case的常量表達式只起語句標號作用,執行switch語句是根據switch後面表達式的值找到匹配人口標號,開始執行。
Switch(表達式)
{case常量表達式1:語句1
case常量表達式2:語句2
...
case常量表達式n:語句n
default:語句n+1}
例3
(1)
#include<stdio.h>
void main()
{int a=0;
if(a++)
printf("%d",a);
(2)
#include<stdio.h>
void main()
{int a=0;
switch(a++)
{case 0:printf("%d",a);break;
case 1:printf("%d",++a);}
}