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

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

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

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

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

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

相关推荐
王老师青少年编程几秒前
csp信奥赛C++高频考点专项训练之贪心算法 --【部分背包问题】:部分背包问题
c++·算法·贪心·csp·信奥赛·部分背包问题
handler011 分钟前
【Linux 笔记】GDB 调试速查手册
linux·运维·c语言·c++·笔记
绿草在线4 分钟前
02. JakartaEE11+Thymeleaf实现图书管理模块
java
胡图图不糊涂^_^4 分钟前
网络原理笔记
java·网络·笔记·学习·tcp/ip·http·https
无忧.芙桃4 分钟前
现代C++讲解之enum class,static_assert,tuple的使用
开发语言·c++
6Hzlia6 分钟前
【Hot 100 刷题计划】 LeetCode 142. 环形链表 II | C++ 哈希表直觉解法
c++·leetcode·链表
嘻嘻哈哈樱桃6 分钟前
牛客经典101题题解集--哈希
java·数据结构·python·算法·leetcode·职场和发展·哈希算法
SamDeepThinking9 分钟前
秒杀系统里的RocketMQ,不是发个消息那么简单
java·后端·架构
fish_xk9 分钟前
c++中的继承
开发语言·c++
卷毛的技术笔记10 分钟前
告别“盲猜式”排障:分布式链路追踪方案选型与Spring Boot 3实战
java·spring boot·分布式·后端·spring·面试·系统架构