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

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

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

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

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

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

相关推荐
承渊政道28 分钟前
C++学习之旅【C++类和对象(下)】
c++·学习·visual studio
木井巳34 分钟前
【多线程】并发安全
java·java-ee
枫叶丹436 分钟前
【Qt开发】Qt窗口(九) -> QFontDialog 字体对话框
c语言·开发语言·数据库·c++·qt
It's now7 小时前
Spring AI 基础开发流程
java·人工智能·后端·spring
cxh_陈7 小时前
线程的状态,以及和锁有什么关系
java·线程·线程的状态·线程和锁
计算机毕设VX:Fegn08957 小时前
计算机毕业设计|基于springboot + vue图书商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
R.lin7 小时前
Java 8日期时间API完全指南
java·开发语言·python
毕设源码-赖学姐7 小时前
【开题答辩全过程】以 高校教学质量监控平台为例,包含答辩的问题和答案
java·eclipse
旖旎夜光7 小时前
多态(11)(下)
c++·学习
高山上有一只小老虎7 小时前
翻之矩阵中的行
java·算法