if語句
if語句是分支結構的重要組成部分。if語句的功能是先對運算條件進行比較,然後根據比較結果選擇對應的語句塊執行。if語句只能判斷兩種情況:「0」為假值,「非0」為真值。如果為真值,則進入語句塊內執行語句;如果為假值,則跳過if語句塊,繼續執行程式。要注意的是,if語句轉換的條件跳轉指令與if語句的判斷結果是相反的。下面舉例說明:
// c++原始碼說明:if語句結構組成 debug除錯版
if (argc == 0)
// c++原始碼與對應彙編**講解
// c++原始碼對比,比較引數argc等於0,則為真,執行語句塊
if (argc == 0)
; 取argc的值賦值給r3
b6f724d8 ldr r3, [r11,#-8]
使用cmp指令,將r3的值與0相減,結果不影響argc,但影響標記位
b6f724dc cmp r3, #0
; bne檢查標記位z的值,如果值等於0,則跳轉,此時表示argc的值不等於0,
; 於是跳轉到位址0xb6f724f8
; 這個位址為if語句塊的結束位址,隨後跳轉出if語句。
b6f724e0 bne main+52(b6f724f8)
// c++原始碼對比,函式返回。
if…else…語句
按if/else的邏輯,如果滿足if條件,則執行if語句塊;否則執行else語句塊,兩者有且僅有一方會執行。所以,如果編譯器生成的**在000004e0處的跳轉條件成立,則必須到達else塊的**開始處。而000004f8處有個無條件跳轉b,它的作用是繞過else塊,因為如果能執行到這個b,if條件必然成立,對應的反彙編**處的跳轉條件必然不能成立,而且if語句塊已經執行完畢。由此,我們可以利用這裡的兩處跳轉指令作為「指路明燈」,準確劃分if塊和else塊的邊界。
那麼根據以上的規律,可以總結if…else…語句的識別規律如下:
; 先執行影響標誌位的相關指令
bxx else_begin ; 該位址為else語句塊的首位址
if_begin:
…… ; if語句塊內的執行**
if_end:
b else_end ;跳轉到else語句塊的結束位址
else_begin:
…… ; else語句塊內的執行**
else_end:
Python流程控制語句流程控制語句
流程控制語句1 if語句 if 語句基本用法 if 表示式 語句塊其中,表示式可以是乙個單純的布林值或變數,也可以是比較表示式或邏輯表示式,如果表示式為真,則執行 語句塊 如果表示式的值為假,就跳 過 語句塊 繼續執行後面的語句。2 if else語句 if else 語句基本用法 if 表示式 語...
流程控制語句
for a b c 若迴圈體中出現continue,c語句仍得到執行。while dowhile b 執行完do後大括號,再檢驗while b 條件,若為真,繼續。從而有a語句塊至少執行一次的特性。continue 迴圈體內餘下語句忽略,繼續下次迴圈。break用於跳出迴圈或switch.case....
流程控制語句
迴圈 while do while for 判斷 if else switch case 異常處理 try catch finally throw 分支 break continue label return 迴圈 while和do while語句 while語句用於在條件保持為true時反覆執行乙...