【发布时间】:2017-07-28 03:06:21
【问题描述】:
在下面的代码中
#include <iostream>
using namespace std;
int main(void){
double *x, *y;
unsigned long long int n=2;
x = new double [2];
y = new double [2];
for(int i=0; i<2; i++){
x[i] = 1.0;
y[i] = 1.0;
//what is the following line doing exaclty?
x[i] = y[i]/=((double)n);
cout << "\n" << x[i] << "\t" << y[i];
}
delete [] x;
delete [] y;
printf("\n");
return 0;
}
我不明白= 和/= 的组合到底在做什么,以及为什么允许这样做(代码在 Valgrind 下编译和运行正确)。
【问题讨论】:
-
你知道
/=是做什么的吗? -
分解为
y[i] = y[i]/((double)n); x[i] = y[i];。 -
不要垃圾标签。 C 不是 C++。
-
@Ðаn: 对于一个编译时大小的数组
std::array可能是一个很多更好的主意。但在这种情况下,一个简单的double x[2]也可以。这里没有理由涉及动态内存。 -
@Olaf 我正在扩展
/=,但它还有什么意思?
标签: c++ operators compound-assignment