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

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

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

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

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

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

相关推荐
yaoxin5211239 小时前
390. Java IO API - WatchDir 示例
java·前端·python
Halo_tjn10 小时前
Java 基于字符串相关知识点
java·开发语言·算法
梦想的颜色10 小时前
java 利用redis来限制用户频繁点击
java·开发语言
万法若空11 小时前
C++ <memory> 库全方位详解
开发语言·c++
代码中介商11 小时前
C++ 类型转换深度解析:static_cast、dynamic_cast、const_cast、reinterpret_cast
开发语言·c++
青小莫11 小时前
C++之string(OJ练习)
开发语言·c++·stl
freshman_y11 小时前
一篇介绍C语言中二级指针和二维数组的文章
c语言·开发语言
6Hzlia11 小时前
【Hot 100 刷题计划】 LeetCode 199. 二叉树的右视图 | C++ DFS 逆序遍历
c++·leetcode·深度优先
-Marks-11 小时前
【C++编程】STL简介 --- (是什么 | 版本发展历程 | 六大组件 | 重要性缺陷以及如何学习)
开发语言·c++·学习·stl·stl版本