【C/C++】宏定义标志位使用到 (1U<<0)是为什么?

最近开发过程中,遇到一些不同平台的编译器问题

宏定义标志位使用到 (1U<<0)就是出于为了应对不同的编译器。

也就是说:1U<<0 与 1<<0 有什么区别? 答案是:移植性更强。

在实际开发中,不同的编译器都将会把有符号的左移视为无符号左移,会出现问题。

而且,若外部变量 int Count = 0 , 是未签名的,若将其与已签名的 1 << 0 进行比较,则会出现编译器告警,会丢失精准度,甚至报错,显然,我们使用 1U<<0,则会消除这样的隐患,而且也不用担心左移 31或 63位会发生什么问题。

相关推荐
Jinkxs11 分钟前
Java 架构 02:DDD 领域模型设计实战(限界上下文划分)
java·开发语言·架构
code bean13 分钟前
【CMake 】[第十篇]CMake find_package 完全指南:让第三方库集成变得简单
c++·cmake
百锦再14 分钟前
国产数据库的平替亮点——关系型数据库架构适配
android·java·前端·数据库·sql·算法·数据库架构
IT199517 分钟前
C++使用“长度前缀法”解决TCP“粘包 / 拆包”问题
服务器·网络·c++·tcp/ip
爱笑的眼睛1123 分钟前
文本分类的范式演进:从统计概率到语言模型提示工程
java·人工智能·python·ai
Tipriest_34 分钟前
旋转矩阵,齐次变换矩阵,欧拉角,四元数等相互转换的常用代码C++ Python
c++·python·矩阵
周杰伦_Jay36 分钟前
【Go/Python/Java】基础语法+核心特性对比
java·python·golang
sszdlbw38 分钟前
后端springboot框架入门学习--第一篇
java·spring boot·学习
消失的旧时光-194340 分钟前
用 C 实现一个简化版 MessageQueue
c语言·开发语言
小鹿学程序41 分钟前
jdk配置完之后java -version还是默认的jdk版本如何更改
java·开发语言·python