閱讀頗有幾個整數促銷問題後,它似乎是整型的提升,或只適用於小的整數類型,如short int
或char
共識。爲什麼無符號整數變量通常不受整數提升的影響?
不過,我不知道爲什麼我的unsigned int
變量。即價值15
也不應該升級到int
。畢竟,它的轉換等級等於int和unsigned int的等級,如以下引文中的語句(1)所要求的。
作爲int
可以代表價值15
沒有任何問題(我知道所有plattforms),它應該被轉換爲一個int。
以下可以在表達式中使用的任何地方可使用int或unsigned INT:
的物體或表達的整數類型,其整數轉換秩爲小於或等於 int和unsigned int的等級。
類型爲_Bool,int,signed int或unsigned int的位域。
如果int可以表示原始類型(如由寬度限制 ,對於一個位字段)的所有值,該值被轉換爲int; 否則,它被轉換爲一個unsigned int。這些被稱爲 整數促銷。所有其他類型均以整數 促銷活動不變。
With'unsigned a = 1;長長的b = 2; b = a + b;','a'在加法之前被提升爲'long long'。 – chux 2014-09-02 20:10:56
我不清楚你在問什麼,你在問一個基本原理,還是你問爲什麼措辭不允許? – 2014-09-02 20:12:52
可能依賴於你的問題真的是相關的:[在C和C++的算術運算之前爲什麼必須將一個短轉換爲int?](http://stackoverflow.com/questions/24371868/why-musta-a- short-be-convert-an-int-before-arithmetic-operations-in-c-and-c) – 2014-09-02 20:15:19