所以我试图将(3/17)投射为双倍。这是一项任务,所以教授希望它出于某种原因这样做。
我试图通过执行以下操作来施展它:
(double)(3/17)
实际代码:
int assignment7()
{
#include <stdio.h>
#define PI 3.14
int a=0;
double Ny=0,y=0,z=0,x=0,amod2=0;
printf("Enter values for x,y,z and a(must be an odd number): ");
scanf("%lf%lf%lf%d",&x,&y,&z,&a);
amod2=a%2;
printf("%.2lf\n",test);
Ny=y / (double)(3/17) - z + x / amod2 + PI;
printf("%lf\n",Ny);
}
问题发生在倒数第二行,它将3/17解释为int,因此等于0. y / 0
教授确切说明: “一般方程:y = y /(3 / 17) - z + x /(a%2)+ PI(回想:a是一个整数;等式中的3和17常数最初应保留为整数,但应明确type-casted as floating-point values)“
答案 0 :(得分:3)
(3/17)
等于0,因为它是使用整数运算进行计算的,因此得到除以零,这当然是运行时错误。变化:
(double)(3/17)
为:
(3.0 / 17.0)
请注意,演员表是多余的。
答案 1 :(得分:0)
由于3/17
为零,因此除以零。
而是使用双打来开始:3.0 / 17.0
,然后你甚至不需要演员。