C 语言的整数提升(c语言整数的各位数字)

yumo66610个月前 (05-08)技术文章54

在 C 语言源代码中,无论什么地方,如果表达式中用到了 int 或 unsigned int,那么下面的整数类型的对象或表达式、位字段同样可以放在这些地方的表达式中。

  • 整数类型的对象或表达式(不是 int 或者 unsigned int),其整数转换等级低于或等于 int 和 unsigned int 的等级
  • _Bool、int、signed int 或 unsigned int 类型的位字段

整型的转换等级

如果 int 能够代表原类型的所有值(对于位字段,受限于宽度),值将被转换为 int;否则,值被转换为 unsigned int。这些转换行为被称为“整数提升”(integer promotions),而所有其它类型并不会受到整数提升的影响。

整数提升会保留原来的值,也包括符号位。如前所述,是否 char 被视作有符号数取决于实现。例如,有下面的代码片段:

_Bool b = true;
unsigned char u = 1;
short s = 0;
s += b + u;

当在最后一行的表达式中计算变量 s 的值时,由于 _Bool、unsigned char 和 short 类型的转换等级均低于 int,因此 s、b、u 会进行整数提升。

#头条创作挑战赛##C语言每日小知识#

相关文章

C++基础知识总结(超详细总结)(c++基础与深度解析)

C++基础1 C++特点C++在C语言基础上引入了面对对象的机制,同时也兼容C语言。C++有三大特性(1)封装。(2)继承。(3)多态;C++语言编写出的程序结构清晰、易于扩充,程序可读性好。C++生...

C 语言的关键字(C语言的关键字)

C 语言中的关键字又称保留字,它们只能用于预定义的目的,而不能用于任何其它目的。C89C89 中包含 32 个关键字:C99C99 中包含 37 个关键字(粗体蓝色部分是新增关键字(+5)):C11/...

C 语言流程控制语句学习,三大结构基础知识点学习与实践操作掌握

在 C 语言的程序设计领域,如同搭建一座错综复杂的大厦,而顺序结构、选择结构和循环结构就是构建这座大厦的基石。它们看似简单,却蕴含着无穷的力量,决定了程序运行的走向与逻辑。理解这些结构的概念与作用,不...

C语言简介(介绍一下c语言)

C语言是一种通用、高效的结构化编程语言,由**丹尼斯·里奇(Dennis Ritchie)**于1972年在贝尔实验室开发。它最初用于重写Unix操作系统,后因其简洁性、灵活性和对硬件的直接控制能力,...

C语言内存管理(c语言内存管理器)

C语言的内存管理是编程中的核心内容之一,掌握好内存管理可以避免许多常见的错误(如内存泄漏、悬空指针等)。以下是关于C语言内存管理的学习重点、难点、学习方法以及程序示例。一、学习重点1.内存分区栈(St...

C 语言源程序文件扩展名及相关知识详解

本文就来聊一聊C语言源程序文件拼接后生成的文件扩展名是什么?,以及C++源程序文件扩展名对应的知识点是什么。希望对大家有所帮助,别忘了收藏本站哦。在Linux平台上,C语言源代码文件一般以.c为扩展名...