【发布时间】:2016-03-13 13:13:18
【问题描述】:
我不明白以下示例之间的输出是双倍的根本原因。方面:
- 为什么双精度除以整数会得到双精度?
-
为什么一个 int 除以一个 double 会得到一个 double?
#include <stdio.h> int main(int agrc, char **argv) { double d; int a=5,b=2; d = (double)a/b; printf("d= %G\n",d); // outputs 2.5 d = a/(double)b; printf("d= %G\n",d); // outputs 2.5 }
【问题讨论】:
-
强制转换任一操作数会强制进行
double计算。而如果你使用d = (double)(a/b);,那么int除法会在考虑演员表之前执行。