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

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

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

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

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

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

相关推荐
是多巴胺不是尼古丁几秒前
java‘期末复习--多态
java·开发语言
瑞雪兆丰年兮3 分钟前
[从0开始学Java|第二十五天]项目阶段(综合练习&斗地主小游戏)
java·windows
兵哥工控5 分钟前
MFC开关量输出发脉冲实例
c++·mfc·开关量发脉冲
ChillCoding12 分钟前
更新中:C++ STL库,查找排序(基础算法),数据结构,数学算法,竞赛相关基础
数据结构·c++·算法
智者知已应修善业17 分钟前
【51单片机使用IO组赋值方法实现无源蜂鸣器响时LED12亮不响时34亮】2024-3-7
c++·经验分享·笔记·算法·51单片机
.千余19 分钟前
【C++】深挖STL list底层:解迭代器与节点存储逻辑
开发语言·c++·笔记·学习·其他
Demon1_Coder20 分钟前
Day4-微服务-Seata默认事务
java·数据库·微服务
雪落漂泊21 分钟前
C++ 继承与多态(上)
开发语言·c++
Sunia25 分钟前
《AgentX 专栏》08-工作流引擎:AgentWorkflow怎么把工具记忆流程串成一条流水线
java·架构
聆风吟º27 分钟前
【C++11新章】列表初始化详解
开发语言·c++·列表初始化