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

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

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

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

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

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

相关推荐
xieliyu.1 分钟前
Java手搓数据结构:从零模拟实现单向无头非循环链表
java·数据结构·学习·链表
吴梓穆2 分钟前
UE5 C++ 使C++创建动画蓝图
开发语言·c++·ue5
0xDevNull4 分钟前
队列(Queue)实战教程:从原理到架构应用
java·开发语言·后端
conti1235 分钟前
水题记录2.4
c++·笔记·题解
ShineWinsu11 分钟前
C++技术文章
开发语言·c++
星星码️15 分钟前
C++选择题练习(二)
c++
再写一行代码就下班15 分钟前
word模版导出(占位符方式)
java·开发语言·word
懒得起名_yyf15 分钟前
AI智能体Skills全面入门指南
java
敖正炀16 分钟前
集合-List-ArrayList
java
BING_Algorithm20 分钟前
JDBC核心教程
java·后端·mysql