close

以下code,if會先判斷a再判斷b。
只有a成立才會繼續判斷b,否則馬上跳出。

if( a && b ){
......
}

如果a,b的順序顛倒:

if( b && a ){
......
}

if會先判斷b在判斷a。
這樣會有什麼問題呢? (不是就跟上面一樣嗎?)
假若a是(ptr_1 != 0),b是(ptr_1->data == ptr_2->data)。
不先判斷a是否成立而先判斷 ptr_1 和 ptr_2 內容資料是否相等,
若(ptr_1 != 0)不成立則會發生記憶體讀取錯誤。

因此,以上code可以改成下面的code:

if( a ){
if( b ){
......
}
}

先判斷a再判斷b,雖然與第一個相同,但這樣就不會有理解上的錯誤。

arrow
arrow
    全站熱搜

    moses1202 發表在 痞客邦 留言(0) 人氣()