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

yumo6661个月前 (05-08)技术文章14

在 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. **指针 (Pointers):** 这是C语言最核心也是最难掌握的概念。理解指针、指针运算、指针与数组的关系、多级指针、函数指针等需要花费大量时间和精力...

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

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

每日学习“C·语言”是什么呢?(c的语言是什么)

以下是关于 C 语言的详细信息:一、C 语言的基本特点高效性:C 语言是一种接近硬件的编程语言,它允许程序员直接访问内存地址和操作硬件,因此在性能上具有较高的效率。例如,系统级编程和嵌入式系统开发中,...

C语言char的详解(c语言中char的意思)

在C语言中,char 是一种基础数据类型,用于表示字符或小整数值。对 char 的理解和处理非常重要,尤其是在字符串操作、文件读写或其他需要直接控制内存的应用场景中。下面从基本定义、存储方式、常见用法...

从零基础入门C语言教程(零基础c语言入门书籍)

一、下载和安装Visual Studio1.1 下载Visual Studio打开您的浏览器,访问Visual Studio官方网站。在首页选择“下载Visual Studio”按钮,选择“Commu...

“Rust真能防住C代码里的那些老问题吗?我们做了个实验验证”

C 和 C++ 是广泛用于系统开发的传统强者,但也因为内存不安全问题频频“背锅”。那么,使用 Rust,真的能让软件变得更安全吗?系统软件工程师 Marc 最近做了一项实验,亲自验证 Rust 在处理...