在C语言中,求5/2+5.0/2+7%6的结果,要有过程,谢谢
1个回答
2018-01-16
展开全部
根据程序来说吧:
#include <stdio.h>
int main()
{
int a;
float b;
a=5/2+5.0/2+7%6;
b=5/2+5.0/2+7%6;
printf("a=%d\n",a);
printf("b=%f\n",b);
return 0;
}
首先要注意的是C语言的运算符优先级:/、.(乘法)和%运算符的优先级相同,并且都比+,-运算高一级。
第二个是:C语言不同数据类型之间的运算,如果两个数的数据类型那么会首先进行隐式类型转换,
从精度低的转化为精度高的,避免计算时精度的丢失。所以整型数和高精度类型进行转换时,
整型数先转换为高精度类型然后进行运算,得到的结果也为高精度类型。
所以上面的运算中:
由于/和%,比+优先级高,所以从做到右分别计算:
5/2---结果是2,两个整型数据相除,然后执行去尾操作.
5.0/2---结果是2.5,运算时先把2转化为与5.0相同的类型然后相除。
7%6---求余运算结果为1
然后再执行3个加法操作,先后顺序为:
先把2转换为何2.5相同的精度,然后执行2+2.5操作,结果为4.5
然后把7%6的结果1转换为和4.5相同的精度,然后执行1+4.5操作,
所以最终结果为5.5
上述程序中,声明a和b分别为int 和float类型,
把最终结果赋值给a和b,因为a为int型,所以要执行去尾操作,结果为:
a=5
b=5.500000
更多追问追答
追问
过程还可以在简单一点嘛?
追答
简单点?
第一步:从左到右先进行/和%操作(在/运算之前如果数据类型不同进行隐式转换到高精度)
第二步:对第一步的结果,从左到右进行+法操作,(在+运算之前如果数据类型不同进行隐式转换到高精度)
你这个式子,运算基本上就是这两步。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询