int i=3;
发表在C语言图书答疑 2018-04-26 悬赏:30 学分 《C语言从入门到精通(第3版)》第2章 算法
是否精华
版块置顶:

int i=3;

i=(++i)+(++i)+(++i)+(--i)=21;

i=1+(++i)+(++i)+(++i)+(--i)=21;

请问这是为什么?

分享到:
精彩评论 4
mingricopy1995
学分:147 LV3
2018-04-27
沙发

我也是新手,不能很好的回答你的问题;

但是,有几点我是知道的,可以提示你;

1、=是赋值运算符,并非是恒等==;int i=3和int i==3是不同的,第一个是赋初始值3,是变量,既然是变量那么值就并非唯一的;而第二个就是我们数学上的表示i的值等于3,这个是不变的值。

2、你得清楚知道代码中的运算符和数学运算符上有着习惯上的不同,首先是优先级,其次是结合性,同级运算使用结合性,例如有两个赋值运算符,那么这两个就具有从结合性上考虑的先后顺序;

3、至于有关于自增运算符的前置和后置,我想你大概也清楚;

我知道的就这么多,回答不了你的问题,但是我想多少对你也有点提示,老师应该会回答你的,我也会关注的!

皓月追梦赤子
学分:2976 LV11
2018-04-28
板凳
i=(++i)+(++i)+(++i)+(--i)=21;是不是错的。等于20才对。
mingricopy1995
学分:147 LV3
2018-04-28
地板

我是初学,暂时还没有对C语言中的运算符进行研究和分析运算,不过有一点理论还是可以说的,那就是=既然不是恒等,那么i=100也不会有错,自增的使用应该不是这种意思,i=3,i++,这种自增表达不是说i++=4;

它的意义应该是表达一种关系,即i在自增后使用;

如果真有兴趣,那不如先把C语言中的34种运算符研究一番,再来看这个东西;

另外,老师们应该能给出准确答案,但是我不知道为什么老是还不来讲解!

大米粥
学分:1330 LV8
TA的每日心情
伤心
2017-05-02 10:51:31
2018-04-28
4L

第一项是数字还是++i很重要,第一个表达式(++i)+(++i)+(++i)+(--i)中,因为++i的优先级高,所以首先计算++i,第一个++i为4,第二个++i,i的值为5,然后再来计算第一个加号,注意这时i已经等于5了,所以5+5=10,第三个++i为6,10+6=16,--i为5,16+5=21,21是第一个表达式的值。

第二个表达式1+(++i)+(++i)+(++i)+(--i),那么第一个++i是4,1+4=5;第二个++i为5,5+5=10;第三个++i为6,10+6=16;最后--i为5,16+5=21。第二个表达式的值是21。

首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照