为了账号安全,请及时绑定邮箱和手机立即绑定

求解(求姐)

为什么左边例题中的  printf("%d、n",a);  中a的值不受上面的影响啊啊啊啊

正在回答

4 回答

受影响了呢,你注意到没,a一共被赋值5次,进行了4次运算,流程是这样的

int a=100; //这条给a赋值100;

printf("%d\n", a++); //在这条语句a先取值再运算,于是会先取a的值100输出,然后再进行运算,这条语句执行完后a=100+1=101;

printf("%d\n", ++a);//在这条语句a运算以后再取值,也就是先进行a=a+1=101+1=102,再将运算过后的a的值进行输出,即102(这时a的值已经为102了);

printf("%d\n", --a);//这条语句同上,也是a运算后再取值,先进行a=a-1=102-1=101,再将运算过后的a的值输出,即101(此时a的值已经变化为101了);

printf("%d\n", a--);//这条语句的话是先取值再运算,也就是先将101这个值输出,输出后再对a进行运算,即a=a-1=101-1=100(运算过后a这时的值为100);

printf("%d\n", a+1);//这一条语句是不会对a的值有影响的,只是输出结果会变为100+1即101,但是a的值还是100;

printf("%d\n", a);//所以最后a的值为100;

7 回复 有任何疑惑可以回复我~
#1

1212520 提问者

非常感谢!
2017-03-14 回复 有任何疑惑可以回复我~
#2

慕粉9354166

赞。。
2017-04-18 回复 有任何疑惑可以回复我~

看其他解答一脸懵逼,看这茅塞顿开

0 回复 有任何疑惑可以回复我~

上面的a++a--这些事有永祥的,只不过a+1只是暂时加1,就是那个语句是一个表达式,不是值,1+1以后等于2,那1还是1不是2,表达式a2=a1+1,a1加上去以后a2变了,所以是不一样的

1 回复 有任何疑惑可以回复我~

a没有声明赋值吗?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926020    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

求解(求姐)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信