" ans += (a[i] - ans * r > 0); "是什么意思,其中 ans,r 是整数,a[i] 是数组元素?

What does it mean by " ans += (a[i] - ans * r > 0); ", where ans,r are integers and a[i] is an array element?

本文关键字:ans 意思 数组元素 整数 是什么 其中 gt      更新时间:2023-10-16

我无法理解以下代码的第二行:

for (int i = n - 1; i >= 0; i--)
{
ans += (a[i] - ans * r > 0);
printf("%dn", ans);
}

如有疑问,请简化。

由于操作员优先级,该行

ans += (a[i] - ans * r > 0);

相当于:

ans += ((a[i] - ans * r) > 0);

要使其更具可读性,请使用:

bool temp1 = ((a[i] - ans * r) > 0);
ans += temp1;

当在诸如ans += temp1之类的术语中使用时,如果值true,则bool被转换/提升为1,如果值false,则转换为0

进一步的简化是:

bool temp1 = ((a[i] - ans * r) > 0);
int temp2 = (temp1? 1 : 0);
ans += temp2;

最后,如果ans(a[i] - ans * r) > 0,会增加1.否则,其值保持不变。