我已经偶然发现了一个持续存在的问题,似乎没有一个合理的解释。这个问题似乎在于内部的for循环进入for (i = size - 1; i >= 0; i--) {etc.}
其中size
是存储在存储器中缓冲,并i
一个文件的大小是一个无符号整数。相反,停车时i == 0
的,它将绕 - 从而导致i = 4294967295
,造成分段错误。将条件更改为i > 0
可解决问题。C for循环行为奇怪
然而,是不是这种奇特?我必须忽略for循环在C中如何操作的一些关键部分。它是否遵循这个方案:初始化,检查条件,增加/减少,检查条件等等?
任何帮助表示赞赏!
“i”总是大于0,因为“i”是无符号整数 –
几乎但不完全@RaghuSrikanthReddy。 – Bart
@巴特的评论是正确的,如果有点不确定。他的意思是,我很确定,'i'总是大于或等于_0,因为'i'是'unsigned int',这几乎不是Raghu所说的。 – ravron