标题:这个算术表达式的值是多少
只看楼主
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
结帖率:100%
已结贴  问题点数:40 回复次数:13 
这个算术表达式的值是多少
#include "stdio.h"

void main()
{
 float x=2.5,y=4.7;
 int a=7;
 printf("%f\n",x+a%3*(int)(x+y)%2/4);
 getch();
}

运算结果为什么是2.5 我觉得应是2.75
搜索更多相关主题的帖子: 表达 算术 
2009-10-17 10:23
死亡军团
Rank: 2
等 级:论坛游民
威 望:2
帖 子:166
专家分:20
注 册:2008-11-4
得分:20 
a%3*(int)(x+y)%2/4   这个表达式计算出来的是一个整数,本来是0.25的,但是要取整,则为零了。
2009-10-17 10:37
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
得分:10 
40分! 抢分来了。
·
x+a%3*(int)(x+y)%2/4
·
a%3*(int)(x+y)%2/4  /* 这串表达式为零,因为: (x+y)等于7.2被强至转换为整型后为7,
                       所以,a%3*7%2/4=0 这算式里都是整型,不保留小数,最后  x+0=2.5 ,结果就为:2.5*/

努力—前进—变老—退休—入土
2009-10-17 10:37
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
得分:0 
为什么要取整?
2009-10-17 10:39
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
得分:0 
首先 不好意思 我就只有40分
2009-10-17 10:40
死亡军团
Rank: 2
等 级:论坛游民
威 望:2
帖 子:166
专家分:20
注 册:2008-11-4
得分:0 
回复 4楼 zqb7899
因为这个表达式的最高运算级别就是整形,所以最后得出的结果也要是整形,所以最后的答案要取整,如果那个式子当中有一个是浮点数的话,得出的答案就是浮点数。这些你看看书应该要教的。
2009-10-17 10:46
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
得分:0 
有点懂了 谢各位大侠(虾)相救?指教。
2009-10-17 10:56
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
得分:0 
C语言的脾气真是古怪
还得好好摸摸
2009-10-17 10:58
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
得分:0 
40分啊
说点什么混分吧
好像能说的都被被说了
占楼

我可好玩啦...不信你玩玩^_^
2009-10-17 12:25
冰蓝诱惑
Rank: 2
等 级:论坛游民
帖 子:14
专家分:22
注 册:2009-10-16
得分:0 
呃...我也刚开始学C 有时间多聊聊吧~a%3*(int)(x+y)%2/4 这个是用了强制转换...把浮点型强制转换成整形...所以是2.5  呃...以后请大家多关照...
2009-10-17 12:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-288851-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018475 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved