1、自增和自减运算符是C语言中特有的一种运算符,他们的作用分别是对运算对象做加1和减1运算,其功能如下:
++ 自增运算符,如:a++,++a;
-- 自减运算符,如:a--,--a。
从表面上看,a++和++a的作用都是使变量a的值加1,但由于运算符++所处的位置不同,使变量a执行加1的运算过程也不同,
++a的运算过程是:先使变量a执行a+1的操作,再使用a的值,
a++的运算过程是:先使用变量a的值,再执行a+1的操作。
自增和自减运算符只能用于变量,不能用于常数或者表达式。
本实例利用两个变量num1,num2,分别实现num1++,++num2的效果,num1++的运算结果通过p0口显示,++num2的运算结果通过p1显示。
2、在keil c51中新建工程ex10,编写如下程序代码,编译并生成ex10.hex文件。
void main(void)
{
unsigned char num1,num2; //定义两个无符号字符型变量
{
unsigned char num1,num2; //定义两个无符号字符型变量
num1 = 0;
num2 = 0;
P0 = 0xff; //先使P0,P1口的LED熄灭
P1 = 0xff;
delay();
delay();
delay();
delay();
num2 = 0;
P0 = 0xff; //先使P0,P1口的LED熄灭
P1 = 0xff;
delay();
delay();
delay();
delay();
P0 = num1++; //自增运算一次
P1 = ++num2;
delay();
delay();
delay();
delay();
P1 = ++num2;
delay();
delay();
delay();
delay();
P0 = num1++; //自增运算一次
P1 = ++num2;
delay();
delay();
P1 = ++num2;
delay();
delay();
while(1)
{
{
}
}
}
3、在proteus中新建仿真文件ex10.dsn,电路原理图如下:
4、启动仿真,观察运行结果。可以看到,开始的时候,P0口和P1口的led全部熄灭,然后P1.0的LED熄灭,接着P0.0的LED熄灭,下图是最后的显示结果。
根据程序运行结果,验证了a++和++a这两种运算的执行过程。