·

你这是循环体结束后 i 还在使用?否则不会触发越界的。循环结束后 i == 5,但你不使用 arr[i] 就不会越界。

尽量 for (int i = 0; i <= 4; ++i) 这样用,把 i 的值限制在需要的作用域内,这样不容易出岔子~

从原则上说,定义的所有变量的作用域都应当尽可能地小,能够满足使用需求的作用域就够了。在 C 中,函数内顶级的变量都需要在函数起始部分声明,做不到这一点,但 for 内限制索引变量还是没问题的。

Replies
2

C89要声明在作用域顶部,C99以后就不用了,就可以就近写了,现在C17标准了

啊,谢谢 laughing 我对 C 不是很熟悉,语言标准关注得不多,谢谢指点~

这样的话应该摒弃在作用域开始处声明变量的陋习 +1