看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《QQ29 (我愛阿蓉)》之銘言: : 今天trace code : if : {......} : else<=====中斷點設這 : { : if() : { ....} : }<==================跳到這 : 中斷以後 按下f10 發現他就跳到上面那鍵頭了 : 想一想 : 難道 : else{ if() {}} : 其實跟 else if()是相等的?????? : 只是多了一個{}scope不同??? @@ 不相等啊 if( ) { else { if( ) { } //some statements here } 和 if( ) { else if( ) { } // where can you put 'some statements' ? 上述的例子說明在High level language的語意上這兩者是不相等的 回到你前面的問題 為什麼中斷點這樣跳 和 1. Compiler的最佳化 2. debug tool在ASM code和C code間的關連對應方法 3. 該平臺的指令集 三者都有關係.. 如果你想知道為什麼那樣跳 可以把Assembly視窗打開看看compiler究竟把哪些assembly關連到哪一行code.. 也許在某些平臺某些Compiler的某些狀況下 if() {} else { if() {} } 和 if() {} else if { } 編出來的code是完全相等的 (其實應該絕大多數的Compier和平臺都會是這樣) 但是那和高階語言本身的「語意」是兩回事 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.83.47 ※ 編輯: minazukimaya 來自: 118.170.83.47 (10/02 01:55)
snowlike:else if( ) {/*some*/} else {/*some*/} 10/02 02:25
minazukimaya:樓上的..那些some statement是if判斷過了之後也會執 10/02 15:03
minazukimaya:行的喔@@ 你寫成這樣 後面那段是if判斷過了就不會執 10/02 15:03
minazukimaya:行的 10/02 15:03
snowlike:else{if{}_}=else{if{_}else{_}}=else if{_}else{_} @@? 10/02 16:15
minazukimaya:第一個等號錯了 10/03 23:08