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

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

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

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

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

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

相关推荐
SWAGGY..2 分钟前
Linux系统编程:(十三)环境变量
java·linux·算法
程序员黑豆8 分钟前
AI全栈开发 - Java:基本数据类型 vs 引用数据类型的内存存储
java·前端·ai编程
zh路西法18 分钟前
基于yaml-cpp的C++参数服务器设计2:多级参数配置
linux·服务器·c++
布朗克16826 分钟前
34 JVM深入理解
java·jvm
啦啦啦啦啦zzzz29 分钟前
算法总结(双指针)
c++·算法·双指针
Flittly34 分钟前
【AgentScope Java新手村系列】(4)结构化输出
java·spring boot·spring·ai
AI科技星38 分钟前
《数术工坊:非欧射影录》类型:硬核光影·几何本源
c语言·开发语言·网络·量子计算·agi
何以解忧,唯有..1 小时前
Python 中的继承机制:从基础到高级用法详解
java·开发语言·python
Yiyaoshujuku1 小时前
化合物数据集API接口(数据结构及样例)
java·网络·数据结构
QiLinkOS1 小时前
极客与商业思维的融合实践(1)
c语言·数据库·c++·人工智能·算法·开源协议