一道C语言的简单的算术问题,请说明运算顺序。

定义inta=7;floatx=2.5;y=4.7;请问x+a%3*(int)(x+y)%2/4等于多少?... 定义 int a=7;float x=2.5;y=4.7;
请问 x+a%3*(int)(x+y)%2/4 等于多少?
展开
 我来答
匿名用户
2012-01-09
展开全部
由于 * / %以及()优先级相同,并且高于+,所以会先计算:

a%3*(int)(x+y)%2/4

由于()的优先级最高,所以先计算x+y并进行类型转换,之后上式就变成了:

a%3*7%2/4

之后由于这里的运算符优先级相同,而且结合性是从左向右的,所以从左向右依次计算,即上式等价于:
(((a%3)*7)%2)/4
把a=7代入上式,得:
(((7%3)*7)%2)/4
于是,最终结果是:
1/4=0
x+0=x=2.5
所以最后的计算结果是2.5
百度网友28b4182
2012-01-09 · TA获得超过7217个赞
知道大有可为答主
回答量:4847
采纳率:100%
帮助的人:1758万
展开全部
定义 int a=7;float x=2.5;y=4.7;
请问 x+a%3*(int)(x+y)%2/4 等于多少?
这些操作符的顺序是括号大于除号和余号然后是加号
结果是2.5+1*7%2/4=2.5
追问
请在详细点。
括号(int)(x+y)等于7对吧,然后呢?
追答
是的,int是强制取整,把那个小数部分的去掉,.然后就按*%/这样的顺序算下来啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1178247843
2012-01-09
知道答主
回答量:14
采纳率:0%
帮助的人:7.6万
展开全部
x+y=2.5+4.7=7.2;
int(x+y)=7;//强制转化为整数
a%3*(int)(x+y)%2/4=(7%3)*7%2/4=1*7%2/4=1/4=0;//这里是整形数
x+a%3*(int)(x+y)%2/4 =2.5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式