在codeblocks中用GCC编译后运行无限循环,加入输出i的值以后发现i自动变小?然后如果把i++移入变成num[i++]又能成功。。
换成C-Free4.0中编译运行,就不会无限循环了…
这是为啥?跪求帮助啊,ಥ_ಥ谢谢谢谢
(ง •̀_•́)ง
楼主把变量i定义在num1数组后面,num1数组有5个元素。
对应的内存情况应该是:num1[0] num1[1] num1[2] num1[3] num1[4] i
而且楼主的scanf函数放在判断i < SIZE之前,楼主每次输入的都是1。
所以前5次输入会把num1[0..4]都输入为1,第六次还没做i < SIZE判断,就执行了一次scanf,且输入的地址是&num1[5],刚好 &num1[5] == &i,所以你就把1输入到了i中,然后再进行i < SIZE的判断,必定会为真的。
请楼主把i < SIZE的判断放到scanf函数前面先做判断就可以了
对于第一图代码,为什么出现了num2和num3数组在变量i和数组num1之间,依然会产生这个效果,因为注意到楼主代码num2和num3没有被使用过,可能相关的编译器对其进行了优化,把没有使用过的变量没有保存到内存中,所以第一图的代码内存的状况跟第二图的代码是一样的。。。。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。