广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++有符号和无符号之间的转换问题
  • 565
分享到

C++有符号和无符号之间的转换问题

2024-04-02 19:04:59 565人浏览 安东尼
摘要

先来看一个程序: #include<iOStream> int main() { unsigned a=5; int b=-10; std

先来看一个程序:


#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++有符号无符号转换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++有符号和无符号之间的转换问题

本文链接: https://www.lsjlt.com/news/129949.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++有符号和无符号之间的转换问题
    先来看一个程序: #include<iostream> int main() { unsigned a=5; int b=-10; std...
    99+
    2022-11-12
  • C++有符号和无符号之间的转换方式
    本篇内容介绍了“C++有符号和无符号之间的转换方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先来看一个程序:#include<io...
    99+
    2023-06-20
  • C语言无符号与有符号问题怎么解决
    今天小编给大家分享一下C语言无符号与有符号问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。C语言中无符号与有符号问...
    99+
    2023-06-08
  • C语言如何实现无符号数和有符号数间的运算
    本篇内容主要讲解“C语言如何实现无符号数和有符号数间的运算”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言如何实现无符号数和有符号数间的运算”吧!unsigned int和int进行运算直接...
    99+
    2023-06-17
  • 如何解决C#换行符号显示错误问题的问题
    这篇文章主要讲解了“如何解决C#换行符号显示错误问题的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决C#换行符号显示错误问题的问题”吧!C#换行符号的问题C#中,一个label的...
    99+
    2023-06-17
  • C++中vector和数组之间的转换及其效率问题怎么解决
    本文小编为大家详细介绍“C++中vector和数组之间的转换及其效率问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++中vector和数组之间的转换及其效率问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-07-05
  • MySQL怎么有效的实现存储IP地址及字符串IP和数值之间的转换
    小编给大家分享一下MySQL怎么有效的实现存储IP地址及字符串IP和数值之间的转换,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!之间,建议当存储IPv4地址时,应该使用32位的无符号整数(UNSIGNED INT)来存储I...
    99+
    2023-06-22
  • 详解MySQL如何有效的存储IP地址及字符串IP和数值之间如何转换
    在看高性能MySQL第3版(4.1.7节)时,作者建议当存储IPv4地址时,应该使用32位的无符号整数(UNSIGNED INT)来存储IP地址,而不是使用字符串。但是没有给出具体原...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作