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

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

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

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

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

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

相关推荐
智者知已应修善业19 分钟前
【PAT乙级真题解惑1012数字分类】2025-3-29
c语言·c++·经验分享·笔记·算法
前路不黑暗@23 分钟前
Java项目:Java脚手架项目的地图服务(十)
java·数据库·spring boot·笔记·学习·spring cloud·maven
v_for_van1 小时前
力扣刷题记录6(无算法背景,纯C语言)
c语言·算法·leetcode
014-code1 小时前
Redisson 常用技巧
java·redis
java干货1 小时前
明明删了数据,磁盘却满了?
java
之歆1 小时前
HA 高可用集群指南
java·开发语言
-To be number.wan1 小时前
算法学习日记 | 双指针
c++·学习·算法
爱编码的小八嘎1 小时前
第2章 认识CPU-2.3 32位微处理器(1)
c语言
wangluoqi2 小时前
c++ 逆元 小总结
开发语言·c++
BackCatK Chen2 小时前
第十五章 吃透C语言结构与数据形式:struct/union/typedef全解析
c语言·开发语言·数据结构·typedef·结构体·函数指针·联合体