我有一行这样的代码:
for (ivalue=list[i];i>0 && list[i-1]>ivalue;i--)
...
运行正常。但是,如果我更改第一个条件i> 0的位置,则会在运行时以分段错误11退出:
for (ivalue=list[i];list[i-1]>ivalue && i>0;i--)
exits with Segmentation fault: 11
为什么结果取决于条件在&&运算符中的位置?
我可以假设这list[i-1]
超出了数组范围。当您使用&&
的代码检查你的第一个条件,如果它是真实的它检查第二,所以在第一种情况下list[i-1]
被限制访问list[0]
,因为您首先检查i>0
,而在第二种情况下你检查list[-1]
的前i>0
检查,这给你错误!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句