C++中j+=(i=j)是什么意思
What does j+= (i=j) mean in C++
我几乎没有 C 语言编程经验。但现在我必须在 VB.net 应用程序中使用一些 C 代码。
到目前为止翻译代码是成功的,但是我遇到了这个奇怪的(至少对我来说)语句
j += ( i = j);
j和i都是整数。我一直在这个论坛和 Google 上寻找,但没有找到关于它可能意味着什么的答案。
在 C 代码中我有一些类似的代码看起来像
chisq += (temp = y[i] - (aa + bb*x[i]), temp*temp);
除了 i 之外的所有变量都是双精度或双精度数组。
如果我犯了一些语法或拼写错误,请原谅。
提前致谢。
编辑:感谢所有的答案...他们非常清楚...不幸的是,我 运行 在从 C 到 VB.net 的转变中陷入了死胡同...
struct profile *p = profiles;
double uf[ARRAY_SIZE];
int i;
double u, v, s;
for (i = 1; i <= n; i++, p++) {
if (p->drctn)
v = phi;
else v = TWOPI - phi;
u = p->xfall*TWOPI;
uf[i] = -(a0*cos(u + v) - a1*sin(u + v));
}
我相信这无法翻译...无论如何感谢您提供的所有重要信息!!!
先把j赋给i,然后把i加给j。
像这样:
i = j;
j += i;
i = j;
j += i;
等于:
i = j;
j *= 2; // j += i is the same as j += j which is j = j + j;
最后:看起来像"trick"但实际上是不好的做法,因为程序的可读性很差。
以下代码:
j += ( i = j);
这只是一种丑陋的说法
i = j;
j = j * 2;
也可以写成:
i = j;
j *= 2;
以同样的方式,第二个操作将按以下顺序计算:
temp = y[i] - (aa + bb * x[i]);
chisq = chisq + (temp * temp);
chisq += (temp = y[i] - (aa + bb*x[i]), temp*temp);
将按以下方式计算:
operator ,
,共 temp = y[i] - (aa + bb*x[i])
和 temp*temp
如果它没有重载,那么它将评估第一个参数,丢弃它然后评估第二个参数和 return it
temp = y[i] - (aa + bb*x[i]);
chisq = chisq + temp*temp;
我几乎没有 C 语言编程经验。但现在我必须在 VB.net 应用程序中使用一些 C 代码。
到目前为止翻译代码是成功的,但是我遇到了这个奇怪的(至少对我来说)语句
j += ( i = j);
j和i都是整数。我一直在这个论坛和 Google 上寻找,但没有找到关于它可能意味着什么的答案。
在 C 代码中我有一些类似的代码看起来像
chisq += (temp = y[i] - (aa + bb*x[i]), temp*temp);
除了 i 之外的所有变量都是双精度或双精度数组。
如果我犯了一些语法或拼写错误,请原谅。
提前致谢。
编辑:感谢所有的答案...他们非常清楚...不幸的是,我 运行 在从 C 到 VB.net 的转变中陷入了死胡同...
struct profile *p = profiles;
double uf[ARRAY_SIZE];
int i;
double u, v, s;
for (i = 1; i <= n; i++, p++) {
if (p->drctn)
v = phi;
else v = TWOPI - phi;
u = p->xfall*TWOPI;
uf[i] = -(a0*cos(u + v) - a1*sin(u + v));
}
我相信这无法翻译...无论如何感谢您提供的所有重要信息!!!
先把j赋给i,然后把i加给j。
像这样:
i = j;
j += i;
i = j;
j += i;
等于:
i = j;
j *= 2; // j += i is the same as j += j which is j = j + j;
最后:看起来像"trick"但实际上是不好的做法,因为程序的可读性很差。
以下代码:
j += ( i = j);
这只是一种丑陋的说法
i = j;
j = j * 2;
也可以写成:
i = j;
j *= 2;
以同样的方式,第二个操作将按以下顺序计算:
temp = y[i] - (aa + bb * x[i]);
chisq = chisq + (temp * temp);
chisq += (temp = y[i] - (aa + bb*x[i]), temp*temp);
将按以下方式计算:
operator ,
,共 temp = y[i] - (aa + bb*x[i])
和 temp*temp
如果它没有重载,那么它将评估第一个参数,丢弃它然后评估第二个参数和 return it
temp = y[i] - (aa + bb*x[i]);
chisq = chisq + temp*temp;