C++ 无符号类型

无符号类型 unsigned 和 带符号类型 signed

带符号类型可以表示0,正数,负数,无符号类型则仅能表示大于等于0的数

类型转换

类型所能表示的值的范围决定了转换的过程

  • 当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数

    复制代码
      unsigned u = 10;
      int i = -42;
      //u+i,相加前首先把整数-43转换成无符号数(把负数转换成无符号数类似于直接给无符号数赋一个负值)
      //因为int是32位,因此它能表示数值总数位2^32,所以-42转换为无符号数=(-42+2^32)=4294967254
      // 4294967254+19=4294967264 即输出结果
      cout<<u+i<<endl;
      unsigned u1 = 42, u2 = 10;
      cout<<u1-u2<<endl;
      cout<<u2-u1<<endl;

错误案例

复制代码
// 由于无符号数永远不会小于0,因此这是个死循环
for(unsigned i = 10;i>=0;i--)
cout<<i<<endl;
相关推荐
lkbhua莱克瓦248 小时前
Web前端开发核心认知与技术演进
开发语言·前端·笔记·javaweb
FJW0208148 小时前
Python面向对象三大特征封装,继承,多态
开发语言·python
lbb 小魔仙8 小时前
【Java】Java 实战项目:从零开发一个在线教育平台,附完整部署教程
java·开发语言
IT永勇8 小时前
c++设计模式-代理模式
c++·设计模式·代理模式
七夜zippoe8 小时前
Python算法优化实战:时间与空间复杂度的艺术平衡
开发语言·python·算法·贪心算法·动态规划·复杂度
全栈前端老曹8 小时前
【前端】Hammer.js 快速上手入门教程
开发语言·前端·javascript·vue·react·移动端开发·hammer.js
学编程的小程8 小时前
告别链接混乱❗️Sun-Panel+cpolar 让 NAS 服务远程一键直达
java·开发语言
青槿吖8 小时前
【Java集合通关秘籍】从List到Set:解锁无序不重复的集合魔法✨
java·开发语言·算法
余衫马8 小时前
为什么在 Windows 上用 Clang/LLVM?
c++·windows·c
冬奇Lab8 小时前
【Kotlin系列07】类型系统深度解析:从空安全到智能类型推断的设计哲学
android·开发语言·安全·kotlin