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

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

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

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

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

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

相关推荐
风动也无爱12 分钟前
Java的正则表达式和爬虫
java·爬虫·正则表达式
訴山海13 分钟前
解决Excel文件流读取数字为时间乱码问题
java·文件流
MinBadGuy16 分钟前
【GeekBand】C++设计模式笔记13_Flyweight_享元模式
c++·设计模式
今日之风甚是温和19 分钟前
【Excel】拆分多个sheet,为单一表格
java·excel·sheet·vb宏
聂 可 以26 分钟前
IDEA一键启动多个微服务
java·微服务·intellij-idea
刘大浪29 分钟前
IDEA 2024安装指南(含安装包以及使用说明 cannot collect jvm options 问题一)
java·ide·intellij-idea
一子二木生三火33 分钟前
IO流(C++)
c语言·开发语言·数据结构·c++·青少年编程
谁在夜里看海.34 分钟前
【从零开始的算法学习日记✨优选算法篇✨】第二章:流动之窗,探索算法的优雅之道
c++·学习·算法
菠菠萝宝44 分钟前
【YOLOv8】安卓端部署-1-项目介绍
android·java·c++·yolo·目标检测·目标跟踪·kotlin