C语言 自加运算符
1.书上说自加运算符也是一种赋值运算符,那么它是不是总是最后参与运算?2.str1[i++]=str2[j++]这个语句中,是先计算++在赋值还是先计算str1[i]=s...
1.书上说自加运算符也是一种赋值运算符,那么它是不是总是最后参与运算?
2.str1[i++]=str2[j++]这个语句中,是先计算++在赋值 还是先计算str1[i]=str2[j],再将i j自加一运算?
需要分的可以说 展开
2.str1[i++]=str2[j++]这个语句中,是先计算++在赋值 还是先计算str1[i]=str2[j],再将i 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。
前自增可能更好一点,它不产生临时变量,效率更高一些。
++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。
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、自加有两种形式,为i++和++i。i++表示先取i的值参与计算,等整个式子运算好了,再给i自增1 .。对于++i 则先把i 自增1得到i的新值 参与计算
2、先计算str1[i]=str2[j](赋值),再将i j自加一运算
2、先计算str1[i]=str2[j](赋值),再将i j自加一运算
追问
也谢谢你们啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
++i的话就是先i=i+1,然后再使用自加后的值参加外层的运算。i++就是先参加外层的运算,再自加。
(后面这个看不懂就不用管了)
不过其实i++和++i都是运算了之后才参加外层的运算。但是通过不同的操作符函数,i++参加外层运算的是原来i的一个副本。++i参加运算的是它自加后的本身。
(后面这个看不懂就不用管了)
不过其实i++和++i都是运算了之后才参加外层的运算。但是通过不同的操作符函数,i++参加外层运算的是原来i的一个副本。++i参加运算的是它自加后的本身。
追问
也谢谢你们啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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]
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]
追问
也谢谢你们啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询