在C中将整数除法转换为double

时间:2012-11-26 10:52:35

标签: c casting

为什么代码

double slope = (double)changeY/changeZ 

将斜率设置为0.0,当我在程序中时,更改X = 20并更改Y = 10(两个整数)?

1 个答案:

答案 0 :(得分:8)

听起来你正在使用错误的变量。试试这个:

int changeX = 20;
int changeY = 10;

double slope = (double)changeY/changeX;

强制转换运算符()的优先级高于/。该表达式将被评估为:

  • changeY投放到double
  • changeX隐式转换为double。如果一个操作数是double,那么另一个操作数也会平衡到double(这正式称为“通常的算术转换”)。
  • 划分两个操作数。结果将是双倍。
  • 将此临时“result-double”存储到另一个名为slope的双。