关于a++和++a(*目录下的内容不需要详细了解)

关于a++和++a的逻辑流程一直是困扰c语言入门童鞋的问题。

下面就以程序的形式来简单的解释一下a++和++a

结果上的区别

1、a++:a++的结果跟程序执行过程有关,有可能是加上1,有可能不加1.

2、++a:++a的结果是a加上1.

计算过程上的区别

1、a++:计算过程是先执行a,之后在增加1.

2、++a:计算过程是先加上1,之后再执行a.

*内存运行不同

1、a++:在内存中寄存器先执行表达式,之后再进一位.

2、++a:在内存中,寄存器先进一位之后再执行表达式.

示例:

下面以程序的形式来解释a++和++a

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
int main(){
int a;//声明a变量为整数int类型的变量
a = 1;//将变量a赋值为1
printf("%d\n",a++);//打印a++的值
//根据a++的计算过程,此处的步骤为:
//1.printf函数打印输出此处a的值(a=1)。
//2.在完成打印后a自加1,即现在a变量的值为2(a=2)。
printf("%d\n",++a);//打印++a的值
//根据++a的计算过程,此处的步骤为:
//1.在运行printf前进行a变量的自加1(a+1),此时a的值为3(2+1)。
//2.printf函数打印输出此处a的值(a=3)。
}

我们可以这样理解。

1
2
3
4
5
6
7
8
9
10
//当某个函数引用了a++时
函数 a++;
//就将其等量化为
函数 a;
a+1;
//当某个函数引用了++a时
函数 ++a;
//就将其等量化为
a+1;
函数 a;

自减同理。