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

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

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

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

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

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

相关推荐
DolphinScheduler社区5 分钟前
图解 Apache DolphinScheduler 如何配置飞书告警
java·大数据·开源·飞书·告警·任务调度·海豚调度
Han.miracle7 分钟前
JavaEE —— 网路编程 Socket套接字
java·java-ee
j***894614 分钟前
Spring Boot整合Redisson的两种方式
java·spring boot·后端
q***965815 分钟前
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
java·数据库·spring boot
今天有个Bug17 分钟前
Java 读取RTSP、RTMP等网络流、图像、视频指南,易于理解,方便使用
java·推流拉流·javacv·图片视频处理
JavaGuide25 分钟前
Spring Boot 4.0 正式发布,真学不动了!
java·spring boot
90后小陈老师34 分钟前
用户管理系统 03 搭建基本结构 | Java新手实战 | 最小架构用户管理系统(SpringBoot+Vue3)
java·spring boot·架构
赖small强34 分钟前
【Linux C/C++开发】第16章:多线程编程基础
linux·c语言·c++·多线程编程·进程和线程的本质区别
n***840739 分钟前
Spring Boot(快速上手)
java·spring boot·后端
组合缺一44 分钟前
Solon AI 开发学习3 - chat - 模型配置与请求选项
java·学习·ai·chatgpt·langchain·solon