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

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

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

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

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

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

相关推荐
RuiZN2 分钟前
UE5 UObject类详解
c++·ue5
小糯米6013 分钟前
C语言 自定义类型:结构体 与 联合体
c语言·开发语言·数据结构
白宇横流学长8 分钟前
基于SpringBoot实现的校园失物招领平台设计与实现【源码+文档】
java·spring boot·后端
罗超驿12 分钟前
6.Java多线程详解:Thread类、线程属性与start()方法深度解析
java·开发语言·面试·java-ee
ZhangShao060716 分钟前
题解:AT_abc459_e
c++
苦逼的猿宝18 分钟前
IT技术交流和分享平台的设计与实现(源码+论文)
java·毕业设计·springboot·计算机毕业设计
yzq19912720 分钟前
10.C语言-表达式、左值与语句
c语言·指针·函数·表达式·语句
摇滚侠21 分钟前
IDEA 需要修改的配置 开发工具
java·ide·intellij-idea
2601_9577867726 分钟前
企业矩阵运营的“三段论“:管号、产内容、获线索——全链路系统的价值拆解
java·前端·矩阵·多平台管理
Run_Teenage28 分钟前
算法模板:输入输出,并查集
java·开发语言·算法