为什么这个if语句中的条件写成乘法而不是乘法的值?

时间:2017-11-01 18:23:16

标签: conditional-statements

我正在审查Arduino库中的一些代码,并在主循环中看到以下if语句:

draw_state++;
if ( draw_state >= 14*8 )
    draw_state = 0;

draw_stateuint8_t。 为什么14*8写在这里而不是112?我最初认为这样做是为了节省空间,因为14和8都可以用一个字节表示,但是112可以表示。

我不明白为什么编译器不会将其优化为112,否则它意味着必须在每次迭代时进行乘法而不是查找值。这对我来说就像有某种形式的记忆和处理权衡。

有没有人建议为什么要这样做?

注意:我很难想出明确的标题,欢迎提出建议。

1 个答案:

答案 0 :(得分:1)

可能要明确显示数字112的来源。例如,它可能是14个字节的位数(但当然我不知道代码的上下文,所以我可能是错的)。对于那些价值来源的人而言,这比仅仅112更为明显。

正如您所指出的,编译器可能会优化它,因此机器代码中不会有乘法。