1212520
2017-03-07 20:51
为什么左边例题中的 printf("%d、n",a); 中a的值不受上面的影响啊啊啊啊
受影响了呢,你注意到没,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;
看其他解答一脸懵逼,看这茅塞顿开
上面的a++a--这些事有永祥的,只不过a+1只是暂时加1,就是那个语句是一个表达式,不是值,1+1以后等于2,那1还是1不是2,表达式a2=a1+1,a1加上去以后a2变了,所以是不一样的
a没有声明赋值吗?
C语言入门
926028 学习 · 20793 问题
相似问题