C语言 自加运算符

1.书上说自加运算符也是一种赋值运算符,那么它是不是总是最后参与运算?2.str1[i++]=str2[j++]这个语句中,是先计算++在赋值还是先计算str1[i]=s... 1.书上说自加运算符也是一种赋值运算符,那么它是不是总是最后参与运算?
2.str1[i++]=str2[j++]这个语句中,是先计算++在赋值 还是先计算str1[i]=str2[j],再将i j自加一运算?

需要分的可以说
展开
 我来答
金鱼8884
2015-10-03 · 知道合伙人数码行家
金鱼8884
知道合伙人数码行家
采纳数:124 获赞数:14951
学生

向TA提问 私信TA
展开全部
  C语言中区分前自增与后自增,它们都有副作用,尤其是后自增。
前自增可能更好一点,它不产生临时变量,效率更高一些。
++y相当于:y=y+1;在变量的使用之前先自增。
y++相当于:y; 其它语句... y=y+1;也就是使用它时,它的值不变,在其使用之后的某一时刻但在再次使用它前其值加一。而且不同的编译器不一定有一致的实现行为。

a=(y++)+(y++)+(y++) 这是一条语句,通常的编译器实现会将此语句一次性扫描完成。这种情况下,y++会保持其值不变,此语句完成后,将y的值递增3次。

b=(++y)+(++y)+(++y)这也是一条语句,编译器扫描完此语句后,先将y递增3次,再作+运算,将运算结果赋予b,此时b应该为24。 但是不同的系统及编译器不一定这样实现,还有可能y依次递增,其结果是21。
秒懂百科
2020-12-03 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.3亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3de39d6454
2011-03-21 · TA获得超过185个赞
知道答主
回答量:87
采纳率:100%
帮助的人:61万
展开全部
1、自加有两种形式,为i++和++i。i++表示先取i的值参与计算,等整个式子运算好了,再给i自增1 .。对于++i 则先把i 自增1得到i的新值 参与计算
2、先计算str1[i]=str2[j](赋值),再将i j自加一运算
追问
也谢谢你们啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幻世灭
2011-03-21 · TA获得超过105个赞
知道答主
回答量:31
采纳率:0%
帮助的人:24.2万
展开全部
++i的话就是先i=i+1,然后再使用自加后的值参加外层的运算。i++就是先参加外层的运算,再自加。
(后面这个看不懂就不用管了)
不过其实i++和++i都是运算了之后才参加外层的运算。但是通过不同的操作符函数,i++参加外层运算的是原来i的一个副本。++i参加运算的是它自加后的本身。
追问
也谢谢你们啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
聊迹生8884
2011-03-21 · TA获得超过376个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:85.6万
展开全部
1. 之所以说它是赋值运算符,是因为++相当于做了 i = i + 1 的操作
2.str1[i++]=str2[j++]
先计算str1[i]=str2[j],此时i,j的值还是以前的值,然后 i = i + 1 ,j = j + 1,其目的就是为了把str2的个元素内容依次赋值给str1个元素的内容
如果是str1[++i]=str2[++j]
先是 i = i + 1 ,j = j + 1,此时i,j的值都比以前大1,然后才是str1[i]=str2[j]
追问
也谢谢你们啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式