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

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

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

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

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

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

相关推荐
Knight_AL19 小时前
Java 可变参数 Object... args 详解:原理、用法与实战场景
java·开发语言·python
风月歌19 小时前
基于小程序的超市购物系统设计与实现源码(java+小程序+mysql+vue+文档)
java·mysql·微信小程序·小程序·毕业设计·源码
再来一根辣条19 小时前
Stream是怎么运行的?
java
C雨后彩虹19 小时前
幼儿园分班
java·数据结构·算法·华为·面试
黄俊懿19 小时前
【深入理解SpringCloud微服务】Gateway源码解析
java·后端·spring·spring cloud·微服务·gateway·架构师
Yupureki19 小时前
《算法竞赛从入门到国奖》算法基础:入门篇-二分算法
c语言·开发语言·数据结构·c++·算法·visual studio
悟能不能悟19 小时前
java list.addAll介绍
java·windows·list
游戏23人生19 小时前
c++ 语言教程——16面向对象设计模式(五)
开发语言·c++·设计模式
Alsn8619 小时前
30.登录用户名密码 RSA 加密传输-后端为java
java·开发语言
老王熬夜敲代码19 小时前
C++的decltype
开发语言·c++·笔记