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

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

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

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

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

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

相关推荐
回忆是昨天里的海1 小时前
docker常见命令
java·docker·容器
计算机毕设vx_bysj68692 小时前
计算机毕业设计必看必学~Springboot教学进度管理系统,原创定制程序、单片机、java、PHP、Python、小程序、文案全套、毕设成品等!
java·spring boot·vue·课程设计·管理系统
赵财猫._.2 小时前
Native API开发:C++与ArkTS混合编程实战
开发语言·c++·harmonyos
普通网友2 小时前
基于C++的操作系统开发
开发语言·c++·算法
沪漂的码农2 小时前
MM32F0144芯片ADC电压采样策略详解
c语言·单片机·嵌入式硬件
狂团商城小师妹2 小时前
JAVA外卖霸王餐CPS优惠CPS平台自主发布小程序+公众号霸王餐源码
java·开发语言·小程序
2501_941111343 小时前
C++中的策略模式高级应用
开发语言·c++·算法
q***11653 小时前
Spring 中的 @ExceptionHandler 注解详解与应用
java·后端·spring
心软小念4 小时前
用Python requests库玩转接口自动化测试!测试工程师的实战秘籍
java·开发语言·python
u***j3245 小时前
后端服务限流实现,Redis+Lua脚本
java·redis·lua