int a=2;
printf("%d\n", a=a+++1);
int a=2;
printf("%d\n", a=++a+1);
int a=2;
printf("%d\n", a=(a++)+1);
三段代码分别输出,3,4,3
为什么?
a++就是先运算之后,再赋值,所以a++ +1就是2+1,然后a=a+1=3。++a就是先赋值再计算表达式的值。
++ 或者 -- ,当变量不参与运算时, ++ 或者 -- 写在变量前或者变量后,效果一样,都是自增或者自减1
当变量参与运算时, ++ 或 -- 写在变量前,先进行变量自身的++或--,再进行运算
++或--写在变量后,先使用变量值本身进行运算,运算完毕再进行变量 自身的++或--
int a=2;
printf("%d\n", a=a+++1);
a=a+++1这个时候可以看作a=(a++)+1,a先进行运算,再进行自身的自增,所以就是a=2+1;最后结果就是3。
int a=2;
printf("%d\n", a=++a+1);
这时,a=++a+1可以看作a=(++a)+1,a先进行自身的自增,再参与运算,就是a=3+1,结果就是4
int a=2;
printf("%d\n", a=(a++)+1);
和第一个输出语句一样,a先进行运算,再进行自身的自增,所以就是a=2+1;最后结果是3。