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

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

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

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

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

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

相关推荐
纪元A梦2 分钟前
华为OD机试真题——通过软盘拷贝文件(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
看到我,请让我去学习8 分钟前
C语言基础(day0424)
c语言·开发语言·数据结构
络712 分钟前
IDEA导入并启动若依项目步骤(SpringBoot+Vue3)
java·spring boot·mysql·vue·intellij-idea
几颗流星13 分钟前
SpringBoot项目集成达梦数据库
java·后端
猫猫头有亿点炸29 分钟前
C语言斐波拉契数列2.0
c语言·开发语言·算法
刚入坑的新人编程37 分钟前
C++多态
开发语言·c++
帆仔哟41 分钟前
【农气项目】基于适宜度的产量预报
java
努力写代码的熊大1 小时前
c语言中文件操作详解
c语言·开发语言
MerlinTheMagic1 小时前
Spring AI 核心概念
java·人工智能·spring
QUST-Learn3D1 小时前
高精度并行2D圆弧拟合(C++)
开发语言·c++