C++有符号和无符号之间的转换
❤️强烈推荐人工智能学习网站❤️
先来看一个程序:
#include<iostream>int main()
{unsigned a=5;int b=-10;std::cout<<b+b<<std::endl;//正常输出std::cout<<a+b<<std::endl;return 0;
}
打印:-20
4294967291
-20正常打印我们都知道,但当一个有符号和一个无符号之间的数进行相加减会发生什么呢?
是这样的:a+b,首先把负数转换为无符号数,然后在进行运算。
b转换为无符号数就是对b取模,2^32+b,结果为4294967286。
再看:
#include<iostream>int main()
{unsigned a=10,b=5;std::cout<<b-a<<std::endl;return 0;
}
打印:4294967291
其过程是对运算后的结果-5取模
循环中的发现:
#include<iostream>int main()
{unsigned u=5;while(u>=0){--u;std::cout<<u<<std::endl;}return 0;}
运行结果将是无限打印,原因是:当u=0时,仍能进去循环,然后u=-1了,由于u的类型是unsigned则被取模转换了,则u总是大于0的,所以是无限循环。
此时应将while里面的条件改成:u>0,当u=0时不能进去循环,u不是小于0也就没有类型转换,则循环能终止。
❤️强烈推荐人工智能学习网站❤️
C++有符号和无符号之间的转换相关推荐
- C语言之(有关%d和%u的有关内容,输出方法)(有符号和无符号在内存中的存储情况)(整形无符号数和有符号数是如何进行计算的,整形无符号数和有符号数在循环中的应用举例)
在C语言的课本中,我们常见的是%u,但我们平时在写代码常用的确是%d,它们二者之间有什么区别呢? 表示形式上 %u表示输入输出格式说明符,是按照unsigned int(无符号十进制数据)格式输入或输 ...
- c语言无符号扩展,深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断...
开篇请各位猿友允许LZ啰嗦几句,最近一直在写计算机系统原理这系列文章,也已经下定决心要把这本书的内容写完.主要目的其实是为了巩固LZ的理解,另外也想把这些内容分享给猿友们,毕竟LZ觉得这些内容对程序猿 ...
- c语言中的无符号字符指什么,深入分析C语言中的有符号和无符号
有符号和无符号指的是数字那么有符号和无符号的区别是什么,我们这里一起来看在C语言中的有符号和无符号分析吧,希望这篇文章能够对各位有用. 就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我 ...
- 【C语言进阶深度学习记录】二 有符号与无符号
今天学习C语言中的有符号与无符号 文章目录 1 计算机中的符号位 1.1 有符号数的表示法 1.2 无符号数的表示法 1.3 signed 和 unsigned 2 实验-当有符号数与无符号数进行运算 ...
- C语言——确定char、short、int和short变量有符号和无符号时的取值范围
C语言--确定char.short.int和short变量有符号和无符号时的取值范围 #include <stdio.h> #include <limits.h>// dete ...
- 深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断...
开篇请各位猿友允许LZ啰嗦几句,最近一直在写计算机系统原理这系列文章,也已经下定决心要把这本书的内容写完.主要目的其实是为了巩固LZ的理解,另外也想把这些内容分享给猿友们,毕竟LZ觉得这些内容对程序猿 ...
- 有符号和无符号整型的临界点
在C++ primer plus 上的图 觉得好久copy下来了 关于有符号和无符号整型的重置点 .
- C语言中的有符号与无符号(挖坑)
1.计算机中的符号位,计算机如何表示正数和负数? 数据类型的最高位用于标识数据的符号 最高位为1,表明这个数为负数 最高位为0,表明这个数为正数 2.有符号数的表示法 在计算机内部用补码表示有符号数 ...
- Verilog -- 有符号与无符号的加法和乘法运算
目录 Verilog中有符号与无符号的加法和乘法运算 无符号乘法和加法 有符号乘法和加法 有符号和无符号运算 参考: https://blog.csdn.net/vivid117/article/de ...
- c++基本数据类型基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:
基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:单精度型:float 双精度型:double 长 ...
最新文章
- Android应用程序键盘(Keyboard)消息处理机制分析(20)
- SAP收购sysbase
- 最短路径 - 迪杰斯特拉(Dijkstra)算法
- django和mysql如何建模_Django中的多个数据库和多个模型
- unity connect mysql_unity连接mysql
- 解决三星PM981硬盘无法正常安装黑苹果的问题(第三版)
- Edge(Linux 版)无法正常同步问题解决
- 赛马问题--最全面的解析
- 迪杰斯特拉算法(dijkstra)
- PHP之——官方手册下载地址
- t检验(t test)
- Android 、AndroidQ 、小米、 oppo等【后台启动界面】问题 解决方案
- Cortex-M3和Cortex-M4 Fault异常基础知识
- Java8新特性stream流的优雅操作
- 获取当年的法定节假日和周末_通过可配置的周末和节假日添加工作日
- Matlab实现倒谱法 求 基音频率和共振峰
- matlab读ascii的dat,[转载]MATLAB读取和调用各种数据(txt,dat,ma
- UVM:一个简易验证平台例子
- Javascript的最大回文字符串
- 1758. Minimum Changes To Make Alternating Binary String