C中的无限循环

C中的无限循环,第1张

概述初学者在这里. 为什么这是一个无限循环? for (p = 0; p < 5; p += 0.5){ printf("p=%2.2f\n",p);} 您会看到无限循环,因为您的p是整数类型(例如int).无论你多少次向一个int添加0.5,它都会保持为0,因为int会截断分配给它的double / fp值.换句话说,它相当于在每个步骤中添加零的循环. 如果你制作浮动或双倍,你的问题就会 初学者在这里.
为什么这是一个无限循环?

for (p = 0; p < 5; p += 0.5){    printf("p=%2.2f\n",p);}
解决方法 您会看到无限循环,因为您的p是整数类型(例如int).无论你多少次向一个int添加0.5,它都会保持为0,因为int会截断分配给它的double / fp值.换句话说,它相当于在每个步骤中添加零的循环.

如果你制作浮动或双倍,你的问题就会消失.

编辑(Oli Charlesworth的评论推荐)

值得注意的是,不鼓励使用浮点数和双精度来控制循环,因为结果并不总是像示例中那样干净.将步长从0.5(2为1的负幂)更改为0.1(这不是2的积分负幂)将改变您以相当意外的方式看到的结果.

如果需要迭代非整数步骤,则应考虑使用此简单模式:

// Loop is controlled by an integer counterfor (int i = 0 ; i != 10 ; i++) {    // FP value is calculated by multiplying the counter by the intended step:    double p = i * 0.5;    // p is between 0 and 4.5,inclusive}
总结

以上是内存溢出为你收集整理的C中的无限循环全部内容,希望文章能够帮你解决C中的无限循环所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1220698.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存