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/2is 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| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |