
int x = 2; int y = x++ * ++x; printf("x = %d\n",x); printf("y = %d\n",y); 求解详细过程。
展开全部
首先明白一点:
第一点:
int x = 1;
if( x++ == 1)
{
printf(" x++ 是先取x的值做逻辑是否相等( == )判断之后再进行的自加操作。");
}
x = 1;
if(++x == 2)
{
printf(" 而++x 是先进行自加操作之后再将 x 的值取出来与逻辑是否相等( == )做判断。");
}
第二点:
a = 1 + b;//取b 然后 加 1 再给a;
表达式是从最右边开始运算的。
所以:
int x = 2;
int y = x++ * ++x;
等价于:
int x, y, tmp;
x = 2;
tmp = ++x;//最右边的++x . (此处x 自加1再给 tmp,x = tmp = 3;)
y = x * tmp; //重新取x做乘法。 ( y = 9;)
x++; // 左边的x++. (先做乘法之后再自加1)
所以x = 4, y = 9;
第一点:
int x = 1;
if( x++ == 1)
{
printf(" x++ 是先取x的值做逻辑是否相等( == )判断之后再进行的自加操作。");
}
x = 1;
if(++x == 2)
{
printf(" 而++x 是先进行自加操作之后再将 x 的值取出来与逻辑是否相等( == )做判断。");
}
第二点:
a = 1 + b;//取b 然后 加 1 再给a;
表达式是从最右边开始运算的。
所以:
int x = 2;
int y = x++ * ++x;
等价于:
int x, y, tmp;
x = 2;
tmp = ++x;//最右边的++x . (此处x 自加1再给 tmp,x = tmp = 3;)
y = x * tmp; //重新取x做乘法。 ( y = 9;)
x++; // 左边的x++. (先做乘法之后再自加1)
所以x = 4, y = 9;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询