由于板工希望十三诫能够在教育新手的同时也能避免夹带错误的观念,
所以大胆增修已经好久没修的十三诫。
增修的同时,板工希望能把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