++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次。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)