以下代码的输出是什么?

时间:2013-04-22 21:08:52

标签: c++

代码的输出是什么

  

int a=3,b=4;
  ++a*=++b;
  cout<<a<<endl;

编译器显示a=20输出。这里是否使用了precedenceoperator associativity

我的理解是:

b左侧的第一个++a*=++b;会增加unary运算符 转过*=所以 表达式现在变为++a = a * ++b; a=3b=5,因此变为15,然后将15分配给a并递增。最后获得{{1}但编译器给出了16

1 个答案:

答案 0 :(得分:1)

在您的特定编译器的特定情况下,似乎首先a增加到4并且b增加到5,然后a * = b执行而a变为20(4 * 5)。但是,其他编译器可能会给出不同的结果,因为它不是人们在评论中提到的定义行为