【C语言】隐式类型和负数|正数的整形|整型提升
【摘要】 【C语言】隐式类型和负数|正数的整形|整型提升
🪁 隐式类型转换
C语言的整形算数运算符总是至少以缺省整形类型的精度来进行的。注意:int(整形)
为了获得这个精度,表达式中的字符和短整型操作符在使用之前,都必须转换为整形提升。
🎗 负数的整形
变量 a 的二进制补码只有⑧个比特位,因为1字节 = 8比特位。补码 1111 1111
在上面说过表达式中的字符型(char)在使用之前都是需要进行整形提升的时候,高位补上符号位,即为1。所以提升后的结果是:补码 1111 1111 1111 1111 1111 1111 1111 1111
🎗 正数的整形
变量 b 的二进制补码只有⑧个比特位,因为 1字节 = 8比特位。补码 0000 0001
因为 char 为有符号的 char,所以整形提升的时候,高位补充符号位,即为0。所以整形提升之后的结果是:注意,原、反、补(正数一样) 0000 0000 0000 0000 0000 0000 0000 0001
🎗 整形提升
编译器运行结果:Yes2
所以从上面的例子就可以得出 变量 b 和 变量 a,由于是 char 和 short 类型,所以发生了整形提升,使得值也得到了提升,才没有执行 if 判断里面的内容。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)