C语言自增(++)自减(--)运算符原理解析

关键:自增减(++/--)前置:在运算之改变变量
           自增减(++/--)后置:在运算之改变变量

 要真正的理解这两句话的内涵,自增减前置在运算之前改变变量,运算时是不变的,即使运算过程中遇到自增减后置时变量也是不变的,因为自增减后置是在运算完成后改变变量

int main()
{
	int i = 0;
	int j = i++ + ++i;//++i优先级高于i++,所以相当于int j=++i + i++; 
                      //此时i=0,1(此时i=1)+1(此时i=2)=2
	int k = --i + i--;//此时i=2,(此时i=1)1+1(此时i=0)=2
	printf("%d %d %d\n", i, j, k);
	return 0;
}

当运行int j = i++ + ++i;
        分析优先级:自加高于+,两个自加同级从左向右计算;其中++i的优先级比i++高,即变为
int j=++i + i++
        运算之前:因为++i,在运算之前使得变量i加一(0+1=1);此时i=1
        运算之中:加上i++,因为是后置++,所以此时i仍然是1,所以为1+1=2赋值给j
        运算之后:因为i++,在运算之后使得变量i加一(1+1=2);此时i=2
当运行int k = --i + i--;
        运算之前:因为--i,在运算之前使得变量i减一(2-1=1);此时i=1
        运算之中:加上i--,因为是后置--,所以此时i仍然是1,所以为1+1=2赋值给j
        运算之后:因为i--,在运算之后使得变量i减一(1-1=0);此时i=0

int main()
{
	int i = 0;
	int j = i + i++;//此时i=0,0+0(此时i=1)=0
	printf("%d %d\n", i, j);
	return 0;
}

 运行int j = i + i++;
        运算之前:无
        运算之中:加上i++,因为是后置++,所以此时i仍然是0,所以为0+0=0赋值给j
        运算之后:因为i++,在运算之后使得变量i加一(0+1=1);此时i=1

int main()
{
	int i = 0;
	int j = i + ++i;//此时i=0,1+(此时i=1)1=2
	printf("%d %d\n", i, j);
	return 0;
}

 运行 int j = i + ++i;
分析优先级:自加高于+,即变为int j=++i + i;
        运算之前:因为++i,在运算之前使得变量i加一(0+1=1);此时i=1
        运算之中:加上i,此时i仍然是1,所以为1+1=2赋值给j
        运算之后:无

猜你喜欢

转载自blog.csdn.net/qq_44928278/article/details/119967113
今日推荐