使用 K&R C 重新整理规则的几个理由:
重新整理为优化提供了更多的机会,如编译时常量折叠。
在大多数机器上,重新整理不会更改整型表达式的结果。
在所有机器上,一些操作在算术上和计算上可交换并且关联。
ISO C 委员会最终承认:重新整理规则应用于所描述的目标体系结构时,本来是要作为 as if 规则的一个实例。ISO C 的 as if 规则是通用许可证,它允许实现任意偏离抽象机器描述,只要偏离不更改有效 C 程序的行为。
因此,由于无法通知此类重新分组,因此允许在任何机器上重新整理所有二元按位运算符(移位除外)。在溢出回绕的典型二进制补码机器上,可以由于相同原因重新整理涉及乘法或加法的整型表达式。