if語(yǔ)句的嵌套
當(dāng)if語(yǔ)句中的執(zhí)行語(yǔ)句又是if語(yǔ)句時(shí),則構(gòu)成了if 語(yǔ)句嵌套的情形。其一般形式可表示如下:
if(表達(dá)式)
if語(yǔ)句;
或者為
if(表達(dá)式)
if語(yǔ)句;
else
if語(yǔ)句;
在嵌套內(nèi)的 if語(yǔ)句可能又是 if-else型的,這將會(huì)出現(xiàn)多個(gè) if和多個(gè)else重疊的情況,這時(shí)要特別注意 if和 else
的配對(duì)問(wèn)題。例如:
if(表達(dá)式1)
if(表達(dá)式2)
語(yǔ)句1;
else
語(yǔ)句2;
其中的else究竟是與哪一個(gè) if配對(duì)呢?
應(yīng)該理解為: 還是應(yīng)理解為:
if(表達(dá)式1)if(表達(dá)式1)
if(表達(dá)式2) if(表達(dá)式2)
語(yǔ)句1; 語(yǔ)句1;
else else
語(yǔ)句2; 語(yǔ)句2;
為了避免這種二義性,C語(yǔ)言規(guī)定,else 總是與它前面最近的 if配對(duì),因此對(duì)上述例子應(yīng)按前一種情況理解。
void main(){
int a,b;
printf("please input A,B: ");
scanf("%d%d",&a,&b);
if(a!=b)
if(a>b) printf("A>B\n");
else printf("A
else printf("A=B\n");
}
比較兩個(gè)數(shù)的大小關(guān)系。
printf("please input A,B: ");
scanf("%d%d",&a,&b);
if(a!=b)
if(a>b) printf("A>B\n");
else printf("A
else printf("A=B\n");
本例中用了 if語(yǔ)句的嵌套結(jié)構(gòu)。 采用嵌套結(jié)構(gòu)實(shí)質(zhì)上是為了進(jìn)行多分支選擇,例 3.16實(shí)際上有三種選擇即A>B、A
或A=B。這種問(wèn)題用 if-else-if語(yǔ)句也可以完成。而且程序更加清晰。因此, 在一般情況下較少使用 if語(yǔ)句的嵌套
結(jié)構(gòu)。 以使程序更便于閱讀理解。
void main(){
int a,b;
printf("please input A,B: ");
scanf("%d%d",&a,&b);
if(a==b) printf("A=B\n");
else if(a>b) printf("A>B\n");
else printf("A
}
![]() | ![]() .. 定價(jià):¥45 優(yōu)惠價(jià):¥42 更多書籍 |
![]() | ![]() .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書籍 |