C ++程序的意外结果

时间:2018-01-29 09:24:20

标签: c++

我已经创建了一个成功编译的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;
}

1 个答案:

答案 0 :(得分:2)

由于这些陈述:

C= (1/2)*(B+sqrt(D));

C ++将1/2解释为整数运算(不是浮动运算),因此1/2 = 0(对于整数)

这是每个人一生中做过的错误!

在您总是使用点写1/2.之类的内容后,使用double类型强制进行除法。