unsigned int i; for (i = 100; i <= 0; --i) printf("%dn",i);
如果你想让它从100循环到0,那么在循环的第二个条件中i >= 0
0。
那,正如其他人所指出的,你需要将你的i
的定义更改为有符号整数(只是int
),因为当计数器意味着-1时,它将是一些其他正数,因为你声明它是unsigned int
。
由于i
是无符号的,它永远不会小于零。 丢弃unsigned
。 另外,交换<=
for >=
。
由于i
是无符号的,因此表达式i <= 0
是可疑的并且等同于i == 0
。
并且代码不会打印任何内容,因为条件i <= 0
在其第一次评估时为false。
如果代码不应该做任何事情,那么它没有任何问题。
假设您希望它将循环索引i
从100打印到1,则需要将i <= 0
更改为i > 0
。
因为它是一个无符号的int,你不能使用i >= 0
因为这会导致它无限循环。
循环检查i <= 0;
i
永远不会低于或等于零。 它的初始值是100。
从技术上讲,该代码没有任何问题。 i <= 0的测试很奇怪,因为我是无符号的,但它在技术上是有效的,当i为0时为true,否则为false。 在你的情况下,我从来没有碰巧是0。
我怀疑你的意思是i > 0
。
<= 0也许? 因为它从一开始就是false
的
对于循环
将测试更改为i > 0
(100次)
或i >= 0
(101次)以及signed int i;
的声明signed int i;
所以它实际上减少到-1。 unsigned int将从0到max-int(溢出)。
如果您希望它打印从100到0的所有数字,那么您需要
unsigned int i; for (i = 100; i >= 0; --i) printf("%dn",i);
你的循环第一次在原始代码中运行时,我是100.测试’100 <= 0'失败,因此没有显示任何内容。
以上就是c/c++开发分享为什么“for(i = 100; i <= 0; –i)”永远循环?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/550033.html