【发布时间】:2013-02-15 22:17:11
【问题描述】:
if (num2 != 0)
printf("\nInput 3 / Input 2 (int) %12d", divide);
else if (num2 == 0)
printf("\nInput 3 / Input 2 (int) DIV/0");
if (flt4 != 0)
printf("\nInput 2 / Input 1 (double) %16.3f", divide2);
else if (flt4 == 0)
printf("\nInput 2 / Input 1 (double) DIV/0");
当我将 num2 或 flt4 设置为 0 时,程序崩溃。否则它工作得很好。我正在查看有关 if/else 语句的阅读内容,我相信我的格式是正确的,但显然有一个错误。
谢谢。
编辑:
我定义除法的代码是:
void calculate (int num1, int num2, int num3, float flt4,int* sum,int* mult,
int* mod,int* divide,double* mult2,double* divide2)
{
*sum = num1 + flt4;
*mult = num1 * num3;
*mod = (num1/10)%10;
*divide= num3 / num2;
*mult2= num1 * flt4;
*divide2= (double)num2 / num1;
return;
}
然后我的问题是,我如何构建这个程序,如果它除以零,我可以在打印函数中显示它。
【问题讨论】:
-
您的代码没有问题。它必须在与您粘贴的不同的地方崩溃。顺便说一句 - 你不需要在 'else' 之后指定另一个 'if' 因为它已经被前面的 if 暗示了。
-
鉴于
divide是一个变量而不是一个就地调用的函数,我想说你总是执行除法,而且只有在完成之后(并将结果存储在divide变量中)您检查分母是否非零。当然,如果它是(将是)零,那么你的程序已经崩溃了。 -
显示你定义
divide的代码。它看起来像divide = something / num2吗?如果是这样,那么你除以 0,这是无效的。
标签: c if-statement divide-by-zero