我们知道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 }
程序运行结果:
版权声明:本文为博主原创文章,未经博主允许不得转载。