Oracle® Solaris Studio 12.4:C 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

6.9.5 As If 规则

K&R C 重新整理规则的一些原因包括:

  • 重新整理为优化提供了更多的机会,如编译时常量折叠。

  • 在大多数机器上,重新整理不会更改整型表达式的结果。

  • 在所有机器上,一些操作在算术上和计算上可交换并且关联。

ISO C 委员会最终确认:重新整理规则应用于所描述的目标体系结构时,本来是要作为 as if 规则的一个实例。ISO C 的 as if 规则是通用许可证,它允许实现任意偏离抽象机器描述,只要偏离不更改有效 C 程序的行为。

由于无法通知此类重新分组,因此允许在任何机器上重新整理所有二元按位运算符(移位除外)。在溢出回绕的典型二进制补码机器上,可以由于相同原因重新整理涉及乘法或加法的整型表达式。

因此,对 C 所做的这一更改对大多数 C 程序员都没有重大影响。