c/c++语言开发共享为什么“for(i = 100; i <= 0; –i)”永远循环?

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

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐