91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++隱式轉換問題分析及解決辦法

發布時間:2020-10-24 10:05:37 來源:腳本之家 閱讀:156 作者:落星無塵_Will 欄目:編程語言

我們先來看下實例代碼:

#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;
}

C++隱式轉換問題分析及解決辦法

解釋:

如果算術運算或關系運算的運算對象有多種類型,需要轉換成同一種類型。

這個涉及到無符號類型的運算對象

如果某個運算符的運算對象不一致,這些運算對象將轉換成同一種類型。但是如果某個運算對象的類型是無符號類型,那么轉換的結果就要依賴機器中各個整數類型中各個整數類型的相對大小了。

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

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

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

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

到此這篇關于C++隱式轉換問題分析及解決辦法的文章就介紹到這了,更多相關C++中發現的隱式轉換問題內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

朝阳县| 安庆市| 从江县| 娱乐| 陆丰市| 黄石市| 吉木萨尔县| 永安市| 独山县| 平定县| 伊川县| 竹山县| 沐川县| 宾川县| 六盘水市| 昔阳县| 汽车| 曲周县| 巴里| 新乡市| 淅川县| 宜宾市| 新丰县| 庆云县| 霍林郭勒市| 宜城市| 松原市| 家居| 惠来县| 弋阳县| 沙田区| 浠水县| 大化| 宁明县| 酉阳| 铜陵市| 海原县| 全南县| 永昌县| 盐亭县| 尉犁县|