我无法理解以下代码的第二行:
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
.否则,其值保持不变。