首页 新闻 会员 周边 捐助

c语言 表达式求值

0
悬赏园豆:5 [待解决问题]

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

为什么?

lxbkylx的主页 lxbkylx | 初学一级 | 园豆:199
提问于:2019-07-27 10:47
< >
分享
所有回答(2)
0

a++就是先运算之后,再赋值,所以a++ +1就是2+1,然后a=a+1=3。++a就是先赋值再计算表达式的值。

哦泡时间到 | 园豆:224 (菜鸟二级) | 2019-07-27 12:23
0

++ 或者 -- ,当变量不参与运算时, ++ 或者 -- 写在变量前或者变量后,效果一样,都是自增或者自减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。

二十六键 | 园豆:223 (菜鸟二级) | 2019-07-27 12:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册