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

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

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

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

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

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

相关推荐
Villiam_AY1 分钟前
一次 DNS 端口引发的代理网络和公司内网冲突问题
java·服务器·数据库
dgvri9 分钟前
比较Spring AOP和AspectJ
java
eggwyw12 分钟前
springboot和springframework版本依赖关系
java·spring boot·后端
样例过了就是过了1 小时前
LeetCode热题100 N 皇后
数据结构·c++·算法·leetcode·dfs·深度优先遍历
于先生吖2 小时前
国际版JAVA婚恋交友系统源码:多语言适配,可商用的跨境婚恋解决方案
java·大数据·交友
zyjyyds1132 小时前
和为0的四元组-双指针法(C语言实现)
c语言·数据结构·算法
fengci.2 小时前
ctfshow(web入门)279-286
java·开发语言·学习
fy121632 小时前
navicat15安装破解
java
ok_hahaha2 小时前
java从头开始-苍穹外卖day05-Redis及店铺营业状态设置
java·开发语言·redis