|
|
1
2
标准插入排序算法和代码之间的唯一区别是,您增加了i而不是减少了。这是你的问题。我敢打赌,在您实际编译和运行的代码中,我——而不是内部循环中的I++。这就是无符号i的区别所在——它不能是负的,所以内部循环永远不会结束。您在发布时是否复制了错误的代码? 编辑: 好吧,既然你改变了发布的代码,一切都是有意义的,对吧?当您将无符号i减到0之后,它将简单地下溢到int_max,这将导致您访问数组边界之外的内存。 |
|
|
2
2
在这两种情况下,发布的代码都将失败(可能是由于segfault,可能只是损坏内存)。 内环从1号位置开始扫描 向上地 在内存中,直到满足某个随机条件-它不会检查它是否已通过数组的结尾,因此会一直运行下去,直到它崩溃或者结束条件恰好被它正在损坏的内存的(未定义的)内容满足。 你可能想扫描 向下 在内存中(在循环中使用i),在这种情况下,它将失败,因为循环将达到0。从0中减去1会在无符号中得到一个很大的正数,因此循环将永远不会结束(i>=0始终为真),它将访问冥王星区域中的某些内存。 |
|
|
3
1
是什么使i+1保持在数组“ints”的范围内?看起来数组中格式不正确的数据会导致索引到不应该在其中的内存区域。 |
|
|
4
0
因为
如果您的计数器是无符号的,则在向后循环(从高到低)时应该非常小心。 |
|
5
0
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |