在C语言中,求5/2+5.0/2+7%6的结果,要有过程,谢谢

 我来答
匿名用户
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
更多追问追答
追问
过程还可以在简单一点嘛?
追答
简单点?
第一步:从左到右先进行/和%操作(在/运算之前如果数据类型不同进行隐式转换到高精度)
第二步:对第一步的结果,从左到右进行+法操作,(在+运算之前如果数据类型不同进行隐式转换到高精度)

你这个式子,运算基本上就是这两步。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式