Impossible is nothing |
|
|||
愛過知情重醉過知酒濃 花開花謝終是空 緣份不停留像春風來又走 女人如花花似夢 |
公告
日歷
統計
導航常用鏈接留言簿(4)隨筆分類(4)隨筆檔案(8)文章分類(77)文章檔案(91)相冊搜索最新評論
閱讀排行榜評論排行榜 |
|和&&的語句執行順序
條件語句中的這兩個“與”和“或”操作符一定要小心,它們的表現可能和你想像的不一樣,這里條件語句中的有些行為需要和說一下: express1 ││ express2 先執行表達式express1如果為“真”,express2將不被執行,express2僅在express1為“假”時才被執行。因為第一個表達式為真了,整個表達式都為真,所以沒有必要再去執行第二個表達式了。 express1 && express2 先執行表達式express1如果為“假”,express2將不被執行,express2僅在express1為“真”時才被執行。因為第一個表達式為假了,整個表達式都為假了,所以沒有必要再去執行第二個表達式了。于是,他并不是你所想像的所有的表達式都會去執行,這點一定要明白,不然你的程序會出現一些莫明的運行時錯誤。 例如,下面的程序: if ( sum > 100 &&( ( fp=fopen( filename,"a" ) ) != NULL ) { fprintf(fp, "Warring: it beyond one hundred\n"); ...... } fprintf( fp, " sum is %id \n", sum ); fclose( fp ); 本來的意圖是,如果sum > 100 ,向文件中寫一條出錯信息,為了方便,把兩個條件判斷寫在一起,于是,如果sum<=100時,打開文件的操作將不會做,最后,fprintf和fclose就會發現未知的結果。再比如,如果我想判斷一個字符是不是有內容,我得判斷這個字符串指針是不為空(NULL)并且其內容不能為空(Empty),一個是空指針,一個是空內容。我也許會這樣寫: if ( ( p != NULL ) && ( strlen(p) != 0 )) 于是,如果p為NULL,那么strlen(p)就不會被執行,于是,strlen也就不會因為一個空指針而“非法操作”或是一個“Core Dump”了。記住一點,條件語句中,并非所有的語句都會執行,當你的條件語句非常多時,這點要尤其注意。
|
![]() |
|
Copyright © 笑笑生 | Powered by: 博客園 模板提供:滬江博客 |