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

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

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

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

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

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

相关推荐
满怀冰雪5 分钟前
第04篇-双指针算法-从有序数组到回文判断的高频解法
java·算法
matlabgoodboy6 分钟前
计算机java程序代写python代码编写c/c++代做qt设计php开发matlab
java·c语言·python
视觉小萌新17 分钟前
C++利用libmicrohttpd制作交互网页端——C1
java·c++·交互
caimouse19 分钟前
Reactos 第 5 章 进程与线程 — 5.11 线程本地存储 TLS
c语言·windows
Gauss松鼠会19 分钟前
【GaussDB】GaussDB SMP特性调优详解
java·服务器·前端·数据库·sql·算法·gaussdb
fpcc24 分钟前
C++编程实践—C++实现类似Qt的信号槽机制
c++·qt
格发许可优化管理系统26 分钟前
Mentor许可证使用规定全解析
java·大数据·c语言·开发语言·c++
郝学胜_神的一滴30 分钟前
Qt 高级开发 030:QListWidget 右键菜单全解,从策略配置到精准删除的优雅实现
c++·qt
JAVA面经实录91730 分钟前
Redis 知识体系(完整版)
java·redis·nosql数据库·nosql
武子康32 分钟前
Java-21 深入浅出 MyBatis 手写ORM框架2 手写Resources、MappedStatment、XMLBuilder等
java·后端