C语言float变量修改代码无法正常运行的原因咨询
第一段代码无法正常运行的原因
第一段代码会直接陷入无限死循环,永远执行不到后面的printf打印语句,核心问题是循环内的赋值逻辑写错了:
- 初始时你给
x赋值为1,刚好满足while (x >= 1)的进入条件,程序会直接进入循环执行内部代码 - 循环里的赋值语句是
x = y - 1.0,而y是固定不变的4.5578,这意味着每跑一次循环,x都会被重新赋值为3.5578——这个值永远比1大 - 循环的判断条件
x >= 1永远成立,程序会一直卡在循环里重复给x赋同一个值,既不会把x改到能退出循环的范围,也跑不到后面的打印代码
这是初学者很容易犯的笔误:如果你本来想实现「x每次循环减1,直到小于1就退出」的效果,循环里应该写
x = x - 1.0(可以简写为x -= 1.0),而不是拿固定值y计算后反复给x赋值。
你写的第二段修复代码能正常跳出循环,本质是因为循环内用了x--让x每次循环都自减1,x会从0逐步变成-1、-2……直到不满足x >= 0的判断条件时正常退出,不会卡死。
内容的提问来源于stack exchange,提问作者chloew3012
相关产品推荐
相关产品推荐

