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

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

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

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

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

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

相关推荐
无巧不成书02186 分钟前
C语言零基础速通指南 | 1小时从入门到跑通完整项目
c语言·开发语言·编程实战·c语言入门·零基础编程·c语言速通
nbwenren15 分钟前
Springboot中SLF4J详解
java·spring boot·后端
三雷科技21 分钟前
使用 `dlopen` 动态加载 `.so` 文件
开发语言·c++·算法
wellc33 分钟前
java进阶知识点
java·开发语言
灰色小旋风38 分钟前
力扣合并K个升序链表C++
java·开发语言
_MyFavorite_41 分钟前
JAVA重点基础、进阶知识及易错点总结(28)接口默认方法与静态方法
java·开发语言·windows
旖-旎1 小时前
分治(快速选择算法)(3)
c++·算法·leetcode·排序算法·快速选择
helx821 小时前
SpringBoot中自定义Starter
java·spring boot·后端
_MyFavorite_1 小时前
JAVA重点基础、进阶知识及易错点总结(31)设计模式基础(单例、工厂)
java·开发语言·设计模式
xiaoye-duck1 小时前
【C++:哈希表封装】哈希表封装 myunordered_map/myunordered_set 实战:底层原理 + 完整实现
数据结构·c++·散列表