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

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

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

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

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

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

相关推荐
风月歌1 分钟前
小程序项目之农业电商服务系统源代码
java·mysql·毕业设计·ssm·源码
历程里程碑2 分钟前
C++ 8:list容器详解与实战指南
c语言·开发语言·数据库·c++·windows·笔记·list
骚戴6 分钟前
架构设计之道:构建高可用的大语言模型(LLM) Enterprise GenAI Gateway
java·人工智能·架构·大模型·gateway·api
TH_16 分钟前
7、在线接口文档沟通
java
Silence_Jy7 分钟前
cs336Lecture 5 and7
java·redis·缓存
小尧嵌入式7 分钟前
C++11线程库的使用(上)
c语言·开发语言·c++·qt·算法
周杰伦_Jay14 分钟前
【后端开发语言对比】Java、Python、Go语言对比及开发框架全解析
java·python·golang
蓝色汪洋16 分钟前
luogu填坑
开发语言·c++·算法
计算机毕设指导617 分钟前
基于微信小程序的网络安全知识科普平台系统【源码文末联系】
java·spring boot·安全·web安全·微信小程序·小程序·tomcat
暗然而日章22 分钟前
C++基础:Stanford CS106L学习笔记 9 类模板(Class Templates)
c++·笔记·学习