老子必过
2016-07-18 12:31
为什么printf("%d\n",a+1);不改变a的值
因为只有自增自减才会改变a的值
printf("%d\n",a+1)的输出结果是101的原因是%d指的是a+1整体。
如果第五步改变a的值,那么第六步的输出结果就不是100了。
不知道我说清楚了吗?
#include <stdio.h>
int main()
{
int a = 100;
printf("x=%d\n",a++);//先取值100 下一段再运算+1。所以这段的 答案是100
printf("x=%d\n",++a);//先运算上一段剩下的(100+1)在运算这一段的a+1,所以公式是(100+1)+1=102,答案是102
printf("x=%d\n",--a);//先运算在取值(-1)+102=101 答案是101
printf("x=%d\n",a--);//先取值 101 再下一段运算101 -1 所以这段 答案是101
printf("x=%d\n",a+1);// 先运算上一段剩下的101-1 在运算这一段 ,所以公式是(101-1)+1=101 答案是101 注意;这里并不改变a的值,也就是说这一段是单纯的+1并不影响第8段运算完的结果a=(101-1),所以a还是100 然后在这段中+1
printf("x=%d\n",a);//第9段说明a还是100
return 0;//
} /* 5. 100
6. 102
7. 101
8. 101
9. 101
10. 100 */
它输出的还是a的值,
符号在后面,先取值再赋值,所以printf是a的值
C语言入门
926210 学习 · 20797 问题
相似问题