十三誡增修--01:你不可以使用尚未給予適當初值的變數
由於板工希望十三誡能夠在教育新手的同時也能避免夾帶錯誤的觀念,
所以大膽增修已經好久沒修的十三誡。
增修的同時,板工希望能把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
--
個人網頁:http://gnitnaw.github.io/
以後在C_and_CPP或LinuxDev發表的文章都會放一份在這邊。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 90.41.214.44
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1462982483.A.F36.html
※ 編輯: wtchen (90.41.214.44), 05/12/2016 00:14:17
推
05/12 11:02, , 1F
05/12 11:02, 1F
→
05/12 11:02, , 2F
05/12 11:02, 2F
→
05/12 11:04, , 3F
05/12 11:04, 3F
推
05/12 11:04, , 4F
05/12 11:04, 4F
推
05/12 11:17, , 5F
05/12 11:17, 5F
→
05/12 12:03, , 6F
05/12 12:03, 6F
推
05/12 12:03, , 7F
05/12 12:03, 7F
→
05/12 12:03, , 8F
05/12 12:03, 8F
→
05/12 12:29, , 9F
05/12 12:29, 9F
→
05/12 12:29, , 10F
05/12 12:29, 10F
推
05/12 12:33, , 11F
05/12 12:33, 11F
→
05/12 13:24, , 12F
05/12 13:24, 12F
推
05/12 14:34, , 13F
05/12 14:34, 13F
→
05/12 14:34, , 14F
05/12 14:34, 14F
※ 編輯: wtchen (90.41.214.44), 05/12/2016 17:41:08
→
05/12 17:43, , 15F
05/12 17:43, 15F
→
05/12 17:43, , 16F
05/12 17:43, 16F
推
05/12 17:43, , 17F
05/12 17:43, 17F
→
05/12 17:44, , 18F
05/12 17:44, 18F
→
05/12 17:44, , 19F
05/12 17:44, 19F
→
05/12 17:47, , 20F
05/12 17:47, 20F
→
05/12 17:47, , 21F
05/12 17:47, 21F
→
05/12 17:47, , 22F
05/12 17:47, 22F
→
05/12 17:54, , 23F
05/12 17:54, 23F
※ 編輯: wtchen (86.209.153.222), 05/12/2016 19:23:11
※ 編輯: wtchen (86.209.153.222), 05/13/2016 16:11:46
推
05/13 20:08, , 24F
05/13 20:08, 24F
→
05/13 20:08, , 25F
05/13 20:08, 25F
→
05/13 20:13, , 26F
05/13 20:13, 26F
→
05/13 22:12, , 27F
05/13 22:12, 27F
討論串 (同標題文章)