我们以i++(i=3)为例子:我们知道i变量的值存在栈中(我们以局部变量为例),它占用4个字节的内存(32位机),自加就是将变量i这个内存的值加1再存入这个内存中。
1.
i++、++i运算之后,i的值都为4,但是表达式i++的值为3,++i的值为4;
i++是先取i的值作为表达式的值,再自加;++i是先自加,此时i的值为4,再将i的值作为表达式的值。
2.i++*i++
此表达式的值为9;
根据优先级,先i*i,然后,两次i++、i++,两个i变量时同一块内存。最后i的值为5;
3.i++*++i
此表达式的值为16;
先‘*’右边的i自加,此时i的值为4,然后i*i,最后i再自加,最后i的值为5;
4.++i*++i
此表达式的值为25;
‘*’两边的i先自加,此时i的值为5,然后再i*i;
自减运算也同理。
附:验证程序如下
#include<stdio.h>
int main()
{
int i;
int b;
i=3;
printf("%d %d\n",i++*i++,i);//3*3
i=3;
printf("%d %d\n",i++*++i,i);//4*4
i=3;
printf("%d %d\n",++i*++i,i);//5*5
}程序运行结果:

自增运算符解析
本文详细解释了C/C++中的自增运算符(i++)的工作原理及其在表达式中的行为表现,包括不同运算符组合下的计算顺序及最终结果,并提供了一个简单的示例程序来验证这些规则。
971

被折叠的 条评论
为什么被折叠?



