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

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

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

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

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

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

相关推荐
胡斌附体19 分钟前
微服务调试问题总结
java·微服务·架构·调试·本地·夸微服务联调
珊瑚里的鱼22 分钟前
第九讲 | 模板进阶
开发语言·c++·笔记·visualstudio·学习方法·visual studio
bing_15829 分钟前
Spring MVC HttpMessageConverter 的作用是什么?
java·spring·mvc
笨蛋不要掉眼泪37 分钟前
SpringAOP
java·数据库·spring·log4j
摄殓永恒1 小时前
猫咪几岁
数据结构·c++·算法
oioihoii1 小时前
C++23 新增的查找算法详解:ranges::find_last 系列函数
java·算法·c++23
酷炫码神1 小时前
C#数据类型
java·服务器·c#
.小墨迹1 小时前
Apollo学习——键盘控制速度
linux·开发语言·c++·python·学习·计算机外设
似水এ᭄往昔2 小时前
【数据结构】——队列
c语言·数据结构·c++·链表
烛九_阴2 小时前
【C++】解析C++面向对象三要素:封装、继承与多态实现机制
c++