c語言中關於兩個if連用怎麼理解

2021-05-02 11:24:26 字數 3216 閱讀 4970

1樓:

1、本程式輸出結果是:over!。

2、第一個if的理解

題目中有兩個if語句,構成了雙重巢狀判斷條件。本題目中的第一個if為第一層判斷條件。

擴充套件資料

一、c語言中if語句用法:

1、一般格式為:if (表示式) 語句 1 [ else 語句2 ]。

值得注意的是,else子句是可選的。當括號中的表示式的值為真值時,程式執行語句1,否則將執行語句2。

2、多個if巢狀使用。

(1)最近原則。當出現多個if語句巢狀在一起的時候,else子句與最臨近的if語句匹配,就像題主給出的這道題目,else子句與第二個if語句匹配。

(2)強制匹配情況。如果將本題目稍作調整,在第二個if語句前面加上一個花括號「」,那麼else語句就與第一個if匹配。

else

printf("%d\n",b);

printf("over!\n");

}3、當程式設計中需要在兩個以上的選擇語句中選擇一條執行,那麼還可以參考if (表示式) 語句 1-if else (表示式) 語句 2-[ else 語句3 ]。

二、c語言中的其他判斷語句簡介

1、while語句,一般表示式為:while(表示式) 。

2、do-while語句,一般表示式為:do while(表示式)。

2樓:樂海白

程式的執行結果輸出「over!」換行。

1、if語句兩種形式:

形式1if(表示式)語句。例:if(a>b) printf("%d\n",a);

形式2if(表示式)語句1 else 語句2。

題中**為例:

if(a>c)

printf("%d\n",a);

else

printf("%d\n",b);

題中的if(a>b)是if語句的「形式1」,它的執行語句是一條「if形式2」語句。

問題中的**等同於如下**:

2、空懸else

if-else 語句引入了一種二義性問題稱為空懸else (dangling-else) 問題,這種問題出現在當if 子句多於else 子句時。問題是這些else 子句分別和哪一個if 子句匹配。例:

問題中的**。

用土話說,就是if和else太多了,它們之間要如何匹配。

在c、c++中空懸else 二義性由以下規定來解決:else 子句與最後出現的未被匹配的if 子句相匹配。

題中**分析:

根據就近匹配原則,最後一個 else應該和if(a>c)相匹配。它做為一個整體成為if(a>b)的執行語句。

產生**難懂的原因,是因為題中的寫法不符合c編碼風格建議:

總是使用複合語句括號以避免在以後修改**時可能出現的混淆或錯誤。

3樓:妲己**

c語言程式設計知識第八節--c語言中的if條件語句

4樓:

典型的if巢狀,記住else是和它最近的if配對

條件觸發是首先必須a>b,然後才會判斷a>c,如果是printf("%d\n",a),如果a<=c, printf("%d\n",b);

不管a和b的大小關係,肯定執行printf("over!\n");

5樓:

程式結果是over!

第一個if是比較a是否大於b

這個程式的意思是:要輸出a的值,需要a大於b和c要輸出b的值,需要a大於b並且小於c

要是a小於b,就輸出over!

6樓:

printf("over!\n");

}明白了吧!第一次判斷a>b為假直接就不執行下一個if,最後的結果就是over!

7樓:匿名使用者

c語言中else是和它最近的前一個if配對,所以這個程式相當於int a=2,b=3,c=1;

if(a>b)

else

}printf("over!\n");

由於a

所以結果是 over

第一個if就是包括了後面的if else在內的一個大if

8樓:匿名使用者

不就是比較那個數大嗎? 簡單的巢狀if呀

c語言中三個if語句的巢狀怎理解

9樓:壞笑的狸貓醬

不知道你說的是橫

向還是縱向

縱向就是多個平級的 if()語句的並列

如 if()

if()

if()

而橫向就是 if()語句中包含if()語句如 if(if(if()));

我正好學到這裡剛剛試驗了一下是可以的 以下: 但是因為格式的關係else

}if(a==2&&b>=4)

else}}

else

return 0;}

10樓:匿名使用者

嚴格按照if語句

的格式來看待if語句,可以在條件執行體語句上外包大括號以便區別:

if ( 條件 ) 語句; //語句也可以是:

if ( 條件 ) 語句; else 語句; //語句也可以是:

如果在巢狀的if語句中出現else,編譯器會自動向前找到最近的那個if完成一個完整的if...else ...語句;你也可以在遇到else後找到這個結構然後用大括號將它們括起來表示這是一條if語句,省得混淆,比如:

if ( a ) if ( b ) else 語句a; else 語句b;

可以看成:if ( a ) else 語句b;

其中巢狀的if語句可以看成一條語句,基本結構是:

if ( a ) 語句c; else 語句b; 其中語句c是一條if語句:if ( b ) else 語句a;

11樓:學渣還是學霸

if語句相關:

if語句的括號內可以加任意語句,但是不能有分隔符。可以用||、&&、!來進行邏輯語句的判斷

若是包含結構,則關係如下:

if(a)}}

則意思為如果滿足a,則對b進行判斷。如果滿足b,則對c進行判斷。如果滿足c,則執行語句d

12樓:

if 是一個分支語句,就是在條件中選擇一個執行,

for 是迴圈語句,只要條件成立,就反覆的執行,所以迴圈裡的條件只是判斷進入或退出迴圈的。

C語言兩個for迴圈,c語言中兩個for語句的是怎樣迴圈的

實際上就這麼寫的話,沒有區別,只是第二種更加清楚,也更加容易方便閱讀和修改 如果 為 for 第一種和第二種就是不同的了,因此建議用第二種的風格 for for 第一個for 的迴圈體只有一個語句 for 花括號括著,內中可以這個語句組,即許有多個語句,分號分開,也可以是空語句 當花括號中只寫了一個...

c語言中這兩個是否等價。for i 0 siifor i 0 i s

int i,j 0 for i 0 s i i if s i c s j s i s j 0 把最後一個元素設為0,可能是作為陣列的結束來用。關於c 的基礎。我是新手。就是有一條語句是for i 0 s i 0 i 請問s i 0 的意思 在c語言裡,字串是以0 也就是字元 0 結尾的,所以,一般在...

C語言中,怎樣不用中間變數而互換兩個變數的值呢

有兩種方式可以不使用中間變數,交換同型別的變數a,b的值 1 使用加法操作 a b b a b a b 2 使用異或操作 a b b a a b c語言運算子是說明特定操作的符號,它是構造c語言表示式的工具。c語言的運算異常豐富,除了控制語句和輸入輸出以外的幾乎所有的基本操作都為運算子處理。除了常見...