在C中需要简单的帮助

莱万

谁能告诉我这段代码是如何工作的?

int Calc(int *arr, int m)

int result;
for (result &= 0; m; (arr[--m] & (0x1 << 0x1F)) ? result += arr[m]: Void());
return result;

我不明白for循环:/

尤里·亚基姆(Yuriy Yakym)

第1部分

首先result &= 0用于通过按位运算设置0result变量AND逐位为0将永远返回0。

您可以这样简单地编写它: result = 0

更好的方法(更好)是:result ^= result(按位XOR


第2部分

m大于(或小于)0时,此循环将迭代因为ifm将返回表达式truem != 0

这样做是非常安全的方法m > 0

您也可以使用此表达式,这并不能使程序达到最佳状态,但是对于另一个程序员来说,理解代码会更简洁!!m:(将m变量投射到bool),它等于m != 0;


第三部分

在此部分中,使用三元运算符(logical_expression ? expression_1 : expression_2)。如果logical_expressiontrueexpression_1则将被执行,expression_2否则将被执行。

因此,在您的代码中,如果此表达式(arr[--m] & (0x1 << 0x1F))返回,true则将我们添加arr[m]result变量中。在另一种情况下什么也不做。

同样,m变量在三元逻辑表达式(arr[--m])中递减

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章