-8

代码的输出将是什么

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

编译器显示输出a=20。 这里是如何使用的?precedenceoperator associativity

我的理解是:

首先b在左边++a*=++b;是递增我们它的unary运算符然后是轮到*=所以表达式变成++a = a * ++b;了现在所以它变成了a=3然后被分配和递增。最后得到但编译器给出b=51515a1620

4

1 回答 1

1

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

于 2013-04-22T21:13:11.420 回答