CS50 Mario项目C语言代码合并两个不等式报错如何解决?
问题原因
- 你的代码错误出在
do-while循环的条件逻辑运算符使用不当:&&为逻辑与运算符,要求左右两个判断同时成立时整个表达式才返回真,但不存在任意整数可以同时满足x < 1和x > 8,因此这个条件永远为假,循环仅执行一次就会退出,完全无法实现重复索要合法输入的效果,这就是编译器报「重叠比较始终求值为false」的原因。
修改方案
将循环条件中的&&替换为逻辑或运算符||:只要输入的x小于1 或者 大于8(即不在1-8的合法区间内),就重新执行循环索要新输入。
修改后的完整代码如下:
#include <cs50.h> #include <stdio.h> int main(void) { int x; do { x = get_int("Height: "); } while(x < 1 || x > 8); // 此处可继续补充打印马里奥金字塔的后续逻辑 }
修改后程序会持续提示输入高度,直到拿到1-8之间的整数,完全符合你的预期需求。
内容的提问来源于stack exchange,提问作者Priapism
相关产品推荐
相关产品推荐

