double c=a/b在(a<b)时为什么总是0

来源:百度知道 编辑:UC知道 时间:2024/05/09 07:57:56
#include"stdio.h"
void main()
{
int a,b;
printf("Please input variables a and b:");
scanf("%d %d",&a,&b);
if(a>=b)
printf("The result of c=a*b is:%d\n",a*b);
else
{
double c=a/b;
printf("The result of c=a/b is:%5.2f\n",c);
}
}

double c=a/b 这句语句在执行时,计算机先将a、b的值代入计算,得到的是一个int型数值;再将这个int型数值结果转换为double型。那么当a<b时,计算机用int型数据计算时,得到的结果当然是0;再将这个“0”转换为double型赋给c,不难理解c的值其实也是0。
正确的语句ls已经给出,即先将a、b转换为double型,再进行除法运算并赋给c。
恩~

int a, b; => double a, b;
或者:
double c = a / b; => double c = (double)a / (double)b;

/符号是取整的,用取余符号