自加自减运算主要分为前缀、后缀。
因此,运算的结果也不一样。
以++为例子,若定义了两个整型变量x,y,经过以下运算输出x,y的值。
实验操作如下:
1)
#include<stdio.h>
int main(void)
{
int x=0,y;
x++;
printf("%d",x);//输出的是变量的值
return 0;
}
?
#include<stdio.h>
int main(void)
{
int x=0,y;
printf("%d",x++);//输出的表达式的值
return 0;
}
?
?2)
#include<stdio.h>
int main(void)
{
int x=0,y;
++x;
printf("%d",x);//输出的变量的值
return 0;
}
#include<stdio.h>
int main(void)
{
int x=0,y;
printf("x=%d,++x=%d\n",x,++x);//前者输出变量的值,后者输出表达式子的值
return 0;
}
3)
要注意的是,y=x++等价于:?
y=x;
x=x+1;
对于y来说,就是把表达式的结果赋给y。
#include<stdio.h>
int main(void)
{
int x=0,y;
y=x++;
printf("x=%d,y=%d\n",x,y);//输出变量的值
return 0;
}
区分输出表达式的情况
#include<stdio.h>
int main(void)
{
int x=0,y;
printf("x=%d,x++=%d\n",x,x++);//注意!区分这里输出的前者是变量,后者是表达式
return 0;
}
?
那么,y=++x就等价于:
x=x+1;
y=x;
对于y来说就是把++x表达式子的结果赋给y。
这里不再对此进行说明。
自减算法也是一样的道理。
要注意,输出的要求或者进行运算的要求是表达式的值还是变量的值。