【发布时间】:2026-01-29 06:10:02
【问题描述】:
我偶然发现了一个持续存在的问题,似乎没有合理的解释。问题似乎出在for (i = size - 1; i >= 0; i--) {etc.} 的for 循环中,其中size 是存储在内存缓冲区中的文件的大小,i 是一个无符号整数。它不是在i == 0 时停止,而是环绕 - 从而导致i = 4294967295 并导致分段错误。将条件更改为i > 0 即可解决问题。
不过,这样不是很奇葩吗?我一定遗漏了 for 循环如何在 C 中运行的一些关键部分。它不遵循这个方案:初始化、检查条件、递增/递减、检查条件等等?
感谢任何帮助!
【问题讨论】:
-
"i" 总是大于 0,因为 "i" 是一个无符号整数
-
几乎但不完全是@RaghuSrikanthReddy。
-
@Bart 的评论是正确的,虽然有点不具体。他的意思是,我很确定,
i总是大于或等于0,因为i是unsigned int,这几乎但不完全是 Raghu 所说的。