我是靠谱客的博主 难过蜻蜓,最近开发中收集的这篇文章主要介绍c的整形转换和整形提升,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. integral promotion:整形提升有符号或无符号的char、short、整形的位域,和枚举类型,可以在一个整形可被使用的表达式里使用,如果在int能够容纳这些类型的所有值,则这些类型被转换为int,否则被转换成unsigned int。
2. 整形转换(1)有符号整形转换成无符号整形:a.如果无符号整形跟原整形一样宽,则结果是原整形的机器码被视为无符号整形。 int i = 9;unsigned int j = i;结果 j = 9 int i = -1;unsigned int j = i;结果 j = 0xffffffff(假设int为32位类型)b.如果无符号整形位宽比原整形窄,则结果是原整形高位被截断。    int i = 0xff; unsigned char j = i;结果j = 0xff(假设short为16位)    int i = -1;unsigned char j = i; 结果j = 0xff c.如果无符号整形位宽更宽,原来无符号转换成无符号整形时,高位填充0,原来有符号转换成无符号时,高位为符号扩充。    short i = -1;unsigned int j = i; 结果j = 0xffffffff;    unsigned short i = 0xffff;unsigned int  j = i;结果j = 0xffff;     (2)无符号整形转换成有符号整形:如果转换后的有符号整形能够表示这个无符号整形的数值,则值不变,否则取决于编译器的实现。


3.算术转换如果有一个操作数是long double,另一个被转换成long double否则如果有一个操作数是double,另一个被转换成double否则如果有一个操作数是float,另一个被转换成float否则如果有一个操作数是unsigned long int,另一个被转换成unsigned long int否则如果有一个操作数是long int,另一个被转换成long int否则如果有一个操作数是long int,另一个是unsigned int,如果long int能够表示所有的unsigned int,则另一个unsigned int转换为long int, 如果long int不能表示所有的unsigned int,则两个操作上都转换成unsigned long int否则如果有一个操作数是unsigned int,另一个被转换成unsigned int否则两个操作数都将被转换成int(规则1,整形提升)

最后

以上就是难过蜻蜓为你收集整理的c的整形转换和整形提升的全部内容,希望文章能够帮你解决c的整形转换和整形提升所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部