最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++隱式轉(zhuǎn)換問題分析及解決辦法

 更新時間:2020年02月25日 09:25:17   作者:落星無塵_Will  
在本篇文章里小編給大家整理了關(guān)于C++隱式轉(zhuǎn)換問題分析及解決辦法,有需要的朋友們可以學(xué)習(xí)下。

我們先來看下實(shí)例代碼:

#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
  unsigned int a;
  int b = -1;
  while (cin >> a)
  {
    if (a > b)
    {
      cout << "a > b" << endl;
    }
    else if (a < b)
    {
      cout << "a < b" << endl;
    }
    else
    {
      cout << "a == b" << endl;
    }
    
  }
  return 0;
}

解釋:

如果算術(shù)運(yùn)算或關(guān)系運(yùn)算的運(yùn)算對象有多種類型,需要轉(zhuǎn)換成同一種類型。

這個涉及到無符號類型的運(yùn)算對象

如果某個運(yùn)算符的運(yùn)算對象不一致,這些運(yùn)算對象將轉(zhuǎn)換成同一種類型。但是如果某個運(yùn)算對象的類型是無符號類型,那么轉(zhuǎn)換的結(jié)果就要依賴機(jī)器中各個整數(shù)類型中各個整數(shù)類型的相對大小了。

像往常一樣,首先執(zhí)行整型提升。如果結(jié)果的類型匹配,無需進(jìn)行進(jìn)一步的轉(zhuǎn)換。如果兩個(提升后的)運(yùn)算對象的類型要么都是帶符號的、要么都是無符號的,則小類型的運(yùn)算對象轉(zhuǎn)換成較大的類型。

如果一個運(yùn)算對象是無符號類型、另外一個運(yùn)算對象是帶符號類型,而且其中的無符號類型不小于帶符號類型,那么帶符號的運(yùn)算對象轉(zhuǎn)換成無符號的。如上面的程序中的unsigned int和int,則int類型的運(yùn)算對象轉(zhuǎn)換成unsigned int類型。如果int型的值恰好為負(fù)值,則轉(zhuǎn)換為unsigned int的數(shù)值總數(shù)去模后的余數(shù)。也就造成了a < b的奇怪情況。

例如,8比特大小的unsigned char可以表示0至255區(qū)間內(nèi)的值,如果我們賦了一個區(qū)間以外的值,則實(shí)際的結(jié)果是該值對256取模后所得的余數(shù)。因此把-1賦給8比特大小的unsigned char所得的結(jié)果是255。

剩下的一種情況是帶符號類型大于無符號類型,此時轉(zhuǎn)換的結(jié)果依賴于機(jī)器,如果無符號類型的所有值都能存在在該帶符號類型中,則無符號類型的運(yùn)算對象轉(zhuǎn)換成帶符號類型。如果不能,那么帶符號類型的運(yùn)算對象轉(zhuǎn)換成無符號類型。

到此這篇關(guān)于C++隱式轉(zhuǎn)換問題分析及解決辦法的文章就介紹到這了,更多相關(guān)C++中發(fā)現(xiàn)的隱式轉(zhuǎn)換問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

大安市| 鄂州市| 巨鹿县| 沁阳市| 凤庆县| 淮安市| 平和县| 沛县| 弋阳县| 兰考县| 丰台区| 什邡市| 荆门市| 阿鲁科尔沁旗| 祁门县| 沙湾县| 巨野县| 崇州市| 大荔县| 青田县| 黔江区| 汾阳市| 定陶县| 新津县| 镇远县| 宜黄县| 甘肃省| 延长县| 扶绥县| 界首市| 通州市| 建平县| 永平县| 色达县| 珲春市| 巴林左旗| 广元市| 佛山市| 敖汉旗| 建宁县| 丹棱县|