选自K & R C通常的算术转换在C:请告诉我该特定规则
- 首先背后的基本原理,如果操作数是双长,另一个被转换为长一倍。
- 否则,如果其中一个操作数是double,另一个则转换为double。
- 否则,如果其中一个操作数是float,另一个则转换为float。
- 否则,积分促销在两个操作数; ...
这意味着低于表达
char a,b,c;
c=a+b;
实际计算值作为
c = char((int)a+(int)b);
这是什么规则背后的原理是什么?
如果a,b和c较短,是否会发生这些转换?
所以只要实现确保'char((int)a +(int)b)'和'a + b'是否可以省略相同的促销活动? – Hari
谢谢,这回答我的问题 – Hari
应该指出,标准的引用部分涵盖程序流程和可能的优化。假设发生整数提升总是最好的,否则最终会出现错误。例如'(c1 + c2)/ c3',其中c1 + c2可能会溢出。编译器无法优化那里的升级,因为它会给出不同的结果。 – Lundin