网站首页 > 技术文章 正文
在 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++20尝鲜:新增语法糖
猜你喜欢
- 2025-08-02 C|在一个结构体嵌套一个共用体实现一体多用
- 2025-08-02 C++中,常用的强制类型转换函数
- 2025-08-02 如何使用C语言编程实现一个推箱子游戏?技术核心和算法实现
- 2025-08-02 C++20 新特性(24):模板访问权限和typename的放宽
- 2025-08-02 C++零基础到工程实践
- 2025-05-14 “Rust真能防住C代码里的那些老问题吗?我们做了个实验验证”
- 2025-05-14 C语言连续生成不同的随机数方法实例加程序
- 2025-05-14 C++20尝鲜:新增语法糖
- 2025-05-14 C语言之位运算符
- 2025-05-14 CSP-J 2024 信奥赛入门组第一轮初赛真题及答案解析(C++)
- 最近发表
-
- 聊一下 gRPC 的 C++ 异步编程_grpc 异步流模式
- [原创首发]安全日志管理中心实战(3)——开源NIDS之suricata部署
- 超详细手把手搭建在ubuntu系统的FFmpeg环境
- Nginx运维之路(Docker多段构建新版本并增加第三方模
- 92.1K小星星,一款开源免费的远程桌面,让你告别付费远程控制!
- Go 人脸识别教程_piwigo人脸识别
- 安卓手机安装Termux——搭建移动服务器
- ubuntu 安装开发环境(c/c++ 15)_ubuntu安装c++编译器
- Rust开发环境搭建指南:从安装到镜像配置的零坑实践
- Windows系统安装VirtualBox构造本地Linux开发环境
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (77)
- vector线程安全吗 (73)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)
