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

  • 本文关键字:ans 整数 其中 是什么 数组元素 c++
  • 更新时间 :
  • 英文 :


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

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.否则,其值保持不变。

最新更新