C语言四则运算程序y==0判断不生效如何修复?除零错误无输出问题
C语言四则运算代码除零无输出问题修复
问题根因
你代码的执行逻辑顺序错误:在判断y是否为0之前,就先执行了division = x/y;的除法运算。当y输入为0时,会直接触发C语言整数除零的未定义行为,程序直接异常退出,无法执行到后续的if判断分支,因此不会输出任何和除法相关的提示。
修复方法
调整逻辑顺序,先判断y的合法性,再执行除法运算,修改后的代码如下:
#include <stdio.h> int main() { int x,y,add,subtraction,multiplication,division; printf("Write x:"); scanf("%d",&x); printf("Write y:"); scanf("%d",&y); add = x+y; printf("Add=%d\n",add); subtraction = x-y; printf("subtraction = %d\n",subtraction); multiplication = x*y; printf("multiplication = %d\n",multiplication); // 先判断y是否为0,再执行除法操作 if (y == 0) printf("Operation not permitted\n"); else { division = x/y; printf("division = %d\n",division); } return 0; }
额外优化建议
- 如果需要支持小数除法,可以将除法相关变量定义为
float或double类型 - 上述修复代码已在错误提示末尾添加换行符
\n,避免输出缓冲区残留导致提示不显示的问题
内容的提问来源于stack exchange,提问作者Vladyslav
相关产品推荐
相关产品推荐

