亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++有符號和無符號之間的轉(zhuǎn)換問題

 更新時間:2021年07月07日 09:16:48   作者:Cdf(人名)  
在開發(fā)中經(jīng)常會遇到有符號和無符號之間的轉(zhuǎn)換問題,如果不清楚問題根源,很難解決bug,今天小編通過本文給大家分享c++有符號無符號轉(zhuǎn)換問題,需要的朋友參考下

先來看一個程序:

#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正常打印我們都知道,但當(dāng)一個有符號和一個無符號之間的數(shù)進(jìn)行相加減會發(fā)生什么呢?

是這樣的:a+b,首先把負(fù)數(shù)轉(zhuǎn)換為無符號數(shù),然后在進(jìn)行運算。

b轉(zhuǎn)換為無符號數(shù)就是對b取模,2^32+b,結(jié)果為4294967286。

再看:

#include<iostream>
 
int main()
{
      unsigned a=10,b=5;
      std::cout<<b-a<<std::endl;
 
      return 0;
}

打?。?294967291

其過程是對運算后的結(jié)果-5取模

循環(huán)中的發(fā)現(xiàn):

#include<iostream>
 
int main()
{
     unsigned u=5;
     while(u>=0)
     {
          --u;
          std::cout<<u<<std::endl;
     }
 
     return 0;
 
}

運行結(jié)果將是無限打印,原因是:當(dāng)u=0時,仍能進(jìn)去循環(huán),然后u=-1了,由于u的類型是unsigned則被取模轉(zhuǎn)換了,則u總是大于0的,所以是無限循環(huán)。

此時應(yīng)將while里面的條件改成:u>0,當(dāng)u=0時不能進(jìn)去循環(huán),u不是小于0也就沒有類型轉(zhuǎn)換,則循環(huán)能終止。

到此這篇關(guān)于C++有符號和無符號之間的轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)c++有符號無符號轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c語言中用位運算實現(xiàn)加法技巧介紹

    c語言中用位運算實現(xiàn)加法技巧介紹

    用位運算實現(xiàn)加法也就是計算機用二進(jìn)制進(jìn)行運算,32位的CPU只能表示32位內(nèi)的數(shù),這里先用1位數(shù)的加法來進(jìn)行,需要的朋友可以參考下
    2012-11-11
  • VS中動態(tài)庫的創(chuàng)建和調(diào)用方式詳解

    VS中動態(tài)庫的創(chuàng)建和調(diào)用方式詳解

    庫的存在形式本質(zhì)上來說庫是一種可執(zhí)行代碼的二進(jìn)制,? 靜態(tài)庫和動態(tài)庫的區(qū)別主要是在鏈接階段處理庫的方式不同而區(qū)分的,本文介紹VS中動態(tài)庫的創(chuàng)建和調(diào)用方式,感興趣的朋友一起看看吧
    2024-01-01
  • 關(guān)于c語言逗號表達(dá)式的運算規(guī)則知識點

    關(guān)于c語言逗號表達(dá)式的運算規(guī)則知識點

    在本篇文章里小編給大家整理的是關(guān)于c語言逗號表達(dá)式的運算規(guī)則知識點,需要的朋友們可以學(xué)習(xí)參考下。
    2020-03-03
  • C++?Boost?Xpressive示例分析使用

    C++?Boost?Xpressive示例分析使用

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱
    2022-11-11
  • C++印刷模板使用方法詳解

    C++印刷模板使用方法詳解

    模板是C++支持參數(shù)化多態(tài)的工具,使用模板可以使用戶為類或者函數(shù)聲明一種一般模式,使得類中的某些數(shù)據(jù)成員或者成員函數(shù)的參數(shù)、返回值取得任意類型
    2022-11-11
  • C程序讀取鍵盤碼的方法

    C程序讀取鍵盤碼的方法

    這篇文章主要介紹了C程序讀取鍵盤碼的方法,運行時可通過鍵盤按鍵獲取其對應(yīng)的鍵盤碼,文章最后附帶了鍵盤碼與按鍵的對照表,需要的朋友可以參考下
    2014-09-09
  • short與int轉(zhuǎn)換的小例子

    short與int轉(zhuǎn)換的小例子

    short與int轉(zhuǎn)換的小例子,需要的朋友可以參考一下
    2013-04-04
  • C++ OpenCV模擬實現(xiàn)微信跳一跳

    C++ OpenCV模擬實現(xiàn)微信跳一跳

    這篇文章主要介紹了使用C++和OpenCV模擬實現(xiàn)微信跳一跳功能,本文圖文并茂通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C語言中#if的使用詳解

    C語言中#if的使用詳解

    #if和#endif是一組同時使用的,叫做條件編譯指令。#if與#define、#include等指令一樣是由預(yù)處理器這個強大的工具處理的,預(yù)處理器可以在編譯前處理c程序,這篇文章主要介紹了C語言中#if的使用,需要的朋友可以參考下
    2022-11-11
  • Qt自定義控件實現(xiàn)圓盤進(jìn)度條

    Qt自定義控件實現(xiàn)圓盤進(jìn)度條

    這篇文章主要為大家詳細(xì)介紹了Qt自定義控件實現(xiàn)圓盤進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評論