加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C中的无限循环

发布时间:2020-12-16 10:30:51 所属栏目:百科 来源:网络整理
导读:初学者在这里. 为什么这是一个无限循环? for (p = 0; p 5; p += 0.5){ printf("p=%2.2fn",p);} 解决方法 您会看到无限循环,因为您的p是整数类型(例如int).无论你多少次向一个int添加0.5,它都会保持为0,因为int会截断分配给它的double / fp值.换句话说,它相
初学者在这里.
为什么这是一个无限循环?

for (p = 0; p < 5; p += 0.5)
{
    printf("p=%2.2fn",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 counter
for (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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读