Crashock 2023-03-22 20:57 采纳率: 100%
浏览 17
已结题

x=x+(x=y)的执行过程是怎样的?

现在有两个数,a的值是0,b的值是1,执行a=a+(a=b);

int a=0,b=1,c=0;
a=a+(a=b);
printf("%d",a);

执行结果为2,即a=1+1=2。

如果把中间的表达式中的加一个值为0的c,那么:

int a=0,b=1,c=0;
a=a+c+(a=b);
printf("%d",a);

执行结果为1,即a=0+0+1=2。

如果把c换成常量0,那么:

int a=0,b=1,c=0;
a=a+0+(a=b);
printf("%d",a);

执行结果还为2,即a=1+0+1=2。

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-03-22 21:09
    关注

    x=x+(x=y)
    这个程序是未定义行为
    你可以试试看不同的编译器,结果会不一样
    具体看这里的解释:https://blog.csdn.net/weixin_43447989/article/details/100049023

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月2日
  • 已采纳回答 3月25日
  • 创建了问题 3月22日