分号不是个“随便的人”
分號是個很不起眼的東西,但在C語言編程里面,它的作用不可忽視,多寫與漏寫都會造成不可預料的錯誤,下面就列舉一些常見的錯誤。
1、多謝了分號
if或while語句塊內如果只有一條語句,那么可以省略大括號的書寫,然而,當他們的條件判斷框后面不小心加了一個”;”時,會使本來想要在if或while條件成立時執行的語句替換成了一個空語句,把原來要執行的語句“擠到了”if或while語句塊外面,使其不管if或while的條件成立與否,都會執行
上面程序的本意是當a = 0時,輸出a = 0;當a != 時,輸出a != 0,a = n(n是此時a的值)
但因為if的判斷框(一對())后面多寫了一個“;”,編譯器就把”;“這個空語句當做了它后面要執行的語句,使printf(“a = %d\n”, a);無論如何都會執行,改變了程序的初衷。
2、漏寫了分號
①當一個自定義的類型在定義時忘了在結尾加上分號,且它的下面跟的是一個沒有寫返回值的函數時,那么編譯器會誤把這個自定義的類型當成函數的返回值類型,造成不可預料的錯誤
上面這段代碼,函數fun()在設計時是不給返回值的,然而因為定義結構體類型時忘記在結尾處加分號了,使此結構體類型成了函數fun()的返回值類型。
②少了一個分號使函數的返回值發生改變,并對函數邏輯發生錯誤。
int a = 0;if (a == 0)returna += 10;a -= 10;a *= 10;a /= 10;假定上面的代碼是一個函數的一部分,那么本意是當a = 0時,函數直接返回調用函數,a != 0 時,函數執行return下面的四條語句,但因為return后面漏寫了分號,錯誤的把a += 10作為返回值,使a = 0時返回10,當a != 0時,函數也只能執行a += 10/下面的三條語句。使函數的邏輯發生了很大的改變。
總結
以上是生活随笔為你收集整理的分号不是个“随便的人”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vim复制、删除和粘贴一行
- 下一篇: 无法检索文件服务器,无服务器快速无法检索