永发信息网

C语言 自加运算符

答案:5  悬赏:70  手机版
解决时间 2021-03-01 08:54
1.书上说自加运算符也是一种赋值运算符,那么它是不是总是最后参与运算?
2.str1[i++]=str2[j++]这个语句中,是先计算++在赋值 还是先计算str1[i]=str2[j],再将i j自加一运算?

需要分的可以说
最佳答案
1 自加、自减i++,i--都是运算符; i++ 相当于 i=i+1 但是前者是一个运算符,后者是一个表达式,所以两者不能等同,只能说功能相当。既然 ++ -- 属于运算符,那么它就要按照运算符的优先等级来。
2首先要区分 i++ 与++i 前者先用了i 在i自加,后者相反;str1[i++]=str2[j++]这个语句中 是先算++在计算str1[i]=str2[j],但是因为i++ 先用了i在i自加,所以看不出区别。如果表达式是
str1[i++]=str2[i++];i=2的话,那么这个式子等价于 str1[1]=str2[2];
全部回答
呵呵,这个问题,钻牛角尖里了 a++; 没错,先运算 后自加;先取得a的值5,取完之后干什么呢?返回?其他运算?也没有要求它返回阿?也没有其他运算阿?所以 “先运算” 到此就完毕了,接着干什么?当然是 “自加”,a 就成了6了,输出6 难道有什么问题吗? 你还想等printf后再 “自加”? 那要没有printf直接返回了,岂不永远也自加不了了? 先运算 后自加 或者其他,都是说 “在表达式内部的先后次序”,离开这个表达式,运算已经完成了,a++后面的分号,表明表达式已经结束了 如果还不能理解,那就改行吧
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]
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。
a++和++a, 前一个先把a用了 然后再给a加一,后一个 先把a自己增加一 然后 再 做运算; 例如: x=5; y=++x; x先加到6,然后再将x的值应用到表达式y=x中,y值为6 x,y都为6 x=5; y=x++; x为6,y为5. 同样,对于你的数组也适用!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大神们帮帮忙,河北石家庄到山东潍坊有5吨货
为什么注册滴滴快车的账号,滴滴公司不能注销
我的世界1.6.2村庄建设,但是空间不足怎么办
蕉叶咖喱屋地址有知道的么?有点事想过去
vivo 手机部件坏了,去售后维修需要掏钱吗
百色在什么地方啊,我要过去处理事情
统一开头的家族游戏名
下列有关种群或群落的说法,正确的是A. 群落
申请信用卡的记录,在征信报告中可以去掉吗
播放器里有个设置叫做置顶,它有什么用
有传染病可以结婚吗
603217812897顺丰快递到那了
福丰装饰材料我想知道这个在什么地方
努比亚实体店在华强北哪里?卖
何建平蔬菜水果粮油批发在哪里啊,我有事要去
推荐资讯
厨房用蒸箱与普通蒸锅有什么不同?
中国移动鑫丰指定专营店在什么地方啊,我要过
针对农村留守儿童,一些农村幼儿园由受过专业
100a的断路器适用于多少kw的用电设备
伊通县三道乡在什么地方啊,我要过去处理事情
502胶粘泡沫在阳光下暴晒能自燃吗
GBA口袋妖怪哪个版本有奇异甜食下载
药物养生的中心环节是调补A.肝B.脾C.心D.肺E.
沁园净水机穆圩专卖店地址在什么地方,想过去
竹笋炒山药怎么做好吃
长春可以乘D28到北京吗?
有道词典打开后首页一片空白无法查阅单词
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?