【发布时间】:2017-02-26 05:57:48
【问题描述】:
我正在阅读计算机系统上的卡内基梅隆大学幻灯片以进行测验。在slide 第49页:
无符号倒计时
使用无符号作为循环索引的正确方法unsigned i; for (i = cnt-2; i < cnt; i--) a[i] += a[i+1];更好
size_t i; for (i = cnt-2; i < cnt; i--) a[i] += a[i+1];
我不明白为什么它不会是无限循环。我正在递减i,它是无符号的,所以它应该总是小于cnt。请解释一下。
【问题讨论】:
-
unsigned i = cnt - 1; while (i--) a[i] = a[i+1];有什么问题吗? -
@DavidC.Rankin Robert Seacord 在 c 和 c++ 中进行安全编码推荐后者,因为长度大约是单词的大小。