由於板工希望十三誡能夠在教育新手的同時也能避免夾帶錯誤的觀念,
所以大膽增修已經好久沒修的十三誡。
增修的同時,板工希望能把C99/C11/C++11/C++14的一些觀念也附上去。
例如for loop改用C99可以支援的語法 for (int a = ...){}
(畢竟現在都2016了,不能老是用ANSI C)
希望各位板友能夠踴躍提供增修意見,感謝。
PS: 不要忘記我們還有徵文活動喔 *_<
=============================================================
01. 你不可以使用尚未給予適當初值的變數
錯誤例子:
int accumulate(int max) /* 從 1 累加到 max,傳回結果 */
{
int sum; /* 未給予初值的區域變數,其內容值是垃圾 */
for (int num = 1; num <= max; num++) { sum += num; }
return sum;
}
正確例子:
int accumulate(int max)
{
int sum = 0; /* 正確的賦予適當的初值 */
for (int num = 1; num <= max; num++) { sum += num; }
return sum;
}
備註:
根據C Standard,擁有static storage duration的變數,
例如全域變數(global variable)或帶有static修飾字者,
其初值(宣告的時候若是沒有另外設初值的情況)為定值(最自然的初值就是0)。
(但是有些MCU 編譯器可能不理會這個規定,所以還是請養成設定初值的好習慣)
補充資料:
- 精華區z->5->1->1->1
- C11 Standard 5.1.2, 6.2.4, 6.7.9