为什么5除以8等于0?
亲们,帮帮忙,菜鸟又来讨教各位大神了,教教我哈:shy:#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c;
char z;
scanf("%d",&a);
scanf("%c",&z);
scanf("%d",&b);
if(z=='+'){c=a+b;}
if(z=='-'){c=a-b;}
if(z=='*'){c=a*b;}
if(z=='/'){c=a/b;}
printf("%d",c);
:cry 因为你的 a b c 都是int型的,
除法之后也会返回int型的,
int型的数不存在小数部分.小数部分会被截去~,所以等于0;
同样 8/5 也就会等于1. Mr.屎壳螂 发表于 2015-1-14 12:51
因为你的 a b c 都是int型的,
除法之后也会返回int型的,
int型的数不存在小数部分.小数部分会被截去~,所 ...
该怎么解决啊亲。。。帮帮忙嘛 我的思维在跳跃 发表于 2015-1-14 14:09
该怎么解决啊亲。。。帮帮忙嘛
改一下数据类型,试试~ 看你输出的是什么型咯 改成float float 这样你看可以不
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b;
double c;
char z;
printf("请输入:")
scanf("%d,%c,%d",&a,&z,&b);
switch(z)
{
case '+':
c=a+b;
break;
case '-':
c=a-b;
break;
case '*':
c=a*b;
break;
case '/':
c=1.0*a/b;
break;
}
printf("%f",c);
return 0;
}
附上结果运行图:
啊,这个不就是整除 的问题么? 因为5和8都是int型变量,所以结果也只能是int型变量,5/8本来等于0.625,这里0.625取整后得到0,如果是1.625取整后为1。如果想得到精确结果,可以用5.0/8或者5/8.0或者5.0/8.0,或者把5和8至少其中一个定义为double型变量即可。 相互学习。。。貌似我的鱼B没了、、、、 变量类型的问题,可以转化成float型运算就是小数了
float
页:
[1]