Ksh*_*mal 4 c++ shorthand assignment-operator
#include <iostream>
using namespace std;
int main()
{
int x=2,a=3,b=2;
x*=a/b;
cout<<x<<" ";
x=2;
x=x*a/b;
cout<<x;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出为:2 3在我看来x * = a / b; 和x = x * a / b; 意思是一样的。有人可以解释这种行为吗?
他们不是很一样。
x *= a / b
被分组为x *= (a / b)
并a / b
以整数算术(是1
)进行。
x = x * a / b
分组为x = ((x * a) / b)
。整数除法的作用并不那么激烈。
使用整数除法:3/2
is 1
。
x*=a/b;
被评价为x *= (a / b)
如此x *= 3 / 2
- > x *= 1
。x=x*a/b;
被评价为x = (x * a) / b;
如此(2 * 3) / 3
- > 6 / 2
- >3