大佬教程收集整理的这篇文章主要介绍了分配和后递增循环迭代器时的C无限循环(gcc bug?),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
for (int i = 0; i < 10; i = i++) { cout << "i = " << i << endl; }
输出:
i = 0 i = 0 i = 0 ...
最奇怪的是,即使理解这是一个错字,我也看不出为什么这段代码不起作用.据我所知,分配给i应该没有影响,因为我仍然应该在分配后增加. (出于某种原因,它必须改为复制一份?但这似乎没有意义.)
另一个有趣的事情是将赋值更改为i = i不会产生无限循环.
这段代码在我们之前的编译器上没有产生无限循环:gcc版本4.4.7 20120313.我们最近升级到gcc版本4.8.5 20150623,现在确实如此.
问题是为什么这个代码在逻辑上看起来不应该产生无限循环,哪个编译器根据C标准正确地解释了这个?
以上是大佬教程为你收集整理的分配和后递增循环迭代器时的C无限循环(gcc bug?)全部内容,希望文章能够帮你解决分配和后递增循环迭代器时的C无限循环(gcc bug?)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。