当前位置:主页   - 电脑 - 程序设计 - C/C++
C整型升级和寻常算术转换实例
来源:网络   作者:   更新时间:2012-03-08
收藏此页】    【字号    】    【打印】    【关闭

  ANSI C中的整型升级

  char,short int或者int型位段(bit-field),包括它们的有符号或无符号变型,

  以及枚举类型,可以使用在需要int或unsigned int的表达式中,

  如果int可以完整地表示源类型的所有值,那么该类型的值就转换为int,否则转换为unsigned int。

  ANSI C中的寻常算术转换

  当执行算术运算时,操作数的类型如果不同,就会发生转换。

  数据类型一般朝着浮点精度更高、长度更长的方向转换,

  整型数如果转换为signed不会丢失信息,就转换为signed,否则就转换为unsigned。

  这个称为值保留(value preserving)原则,与K&R C所采用的无符号保留(unsigned preserving)原则不同。

  浮点类:

  如果一个操作数的类型是long double,那么另一个操作数无论是什么类型都将被转换成long double。

  如果两个操作数都不是long double型,那么当其中一个操作数的类型是double型,则另一个就将被转换成double 型。

  如果两个操作数都不是double型,而其中一个操作数是float型,则另一个被转换成float型。

  注意:double和float都不可用unsigned,short修饰,另外float还不可用long修饰

  整形类规:

  否则,两个操作数都不是三种浮点类型之一,它们一定是某种整值类型。在确定共同的目标提升类型之前,编译器将在所有小于int的整值类型上施加一个被称为整值提升(integral promotion)的过程。在进行整值提升时,类型(char、signed char、unsigned char和short、int)都被提升为类型int。如果机器上的int型足够表示所有unsigned、shoft型的值(这通常发生在short用半个字表示,而int用一个字表示的情况下),则unsigned short int也被转换成int,否则它会被提升为unsigned int。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明