我已经创建了一个成功编译的C ++,但是当我运行它时,我得到了c=0
。
任何人都可以解释原因吗?
int main()
{
double U0, U, C, A, B, D;
U = 0.2;
A = U/U0;
B = 1+1/(16*pow(A, 2));
D = pow(B, 2)-(1/4)*A;
for (U0=0.2; U0<=1; U0=U0+0.2)
{
if (U <= (4*U0))
{
C= (1/2)*(B+sqrt(D));
cout <<" | U0 | "<< U0 <<" | U | "<< U <<" | C^2 | "<< C << endl;
U = U + 0.2;
}
}
return 0;
}
答案 0 :(得分:2)
由于这些陈述:
C= (1/2)*(B+sqrt(D));
C ++将1/2
解释为整数运算(不是浮动运算),因此1/2 = 0
(对于整数)
这是每个人一生中做过的错误!
在您总是使用点写1/2.
之类的内容后,使用double
类型强制进行除法。