C语言自加问题

C语言自加问题,第1张

其实,C语言自加问题是一个很经典的语法知渗磨配识。

++i是变量i先自加1,再参与游尘计算,而i++是变量i先参与运算丛指,再自加1;

所以表达式

j=++i+++i+i++;相当于变量i先自加两次,然后3个i相加,最后变量i再自加一次;

故j=9;i=4;

根据《C语言规则》

①是。j++等价于j=j+1

,

j--相当于j=j-1

所以自加自减坦闹语句都是赋值语句。

②int

a=2

/*定义了整型变量a,并赋了初值2*/

((a++)*(a++)*(a++))

/*

假设令t=((a++)*(a++)*(a++)),

t=8

*/

因为每一个相乘的因子都使用了一次,所败数以a在里面都自增了一次。

即察信首:

a=a+3=5

C语言中区分前自增与后自增,它们都有副作用,尤其是后自增。

前自增可能更好一点,它不产生临时变量,效率更高一些败消。

++y相当于:y=y+1在变量的使用之前先自增。

y++相当于:y其它语句... y=y+1也就是使用它时,它的值不变,在其使用之后的某一时刻但在再次使用它前其值加一。而且不同的编译器不一定有一致的唤山实现行为。

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12295107.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存