從C standardC中的整數升級會降級`long int`?
6.3.1.1
如果int可以表示原始類型(如由寬度限制 ,對於一個比特音響ELD)的所有值,該值被轉換爲INT; 否則,它被轉換爲一個unsigned int。這些被稱爲 整數促銷。
因此,這意味着,如果我在表達式中使用long int
將被降級到unsigned int
?
從C standardC中的整數升級會降級`long int`?
6.3.1.1
如果int可以表示原始類型(如由寬度限制 ,對於一個比特音響ELD)的所有值,該值被轉換爲INT; 否則,它被轉換爲一個unsigned int。這些被稱爲 整數促銷。
因此,這意味着,如果我在表達式中使用long int
將被降級到unsigned int
?
你報的位由它上面的文字限制:
下可以在表達式中使用的任何地方可以使用int或unsigned INT:
- 一個整型轉換等級小於int和unsigned int等級的整型對象或表達式。
- 類型爲_Bool,int,signed int或unsigned int的位域。
如果一個int可以表示原始類型的所有值,則該值爲 轉換爲int;否則,它被轉換爲一個unsigned int。 這些被稱爲整數促銷。所有其他類型均不改變 由整數提升。
換句話說,long int
沒有得到晉升爲int
或unsigned int
。
我認爲「原始類型」指的是「整數類型(除int或無符號整數) 其整數轉換等級小於或等於int的等級並且 unsigned int」,如前面6.3.1.1.2節所定義的那樣。不過,不錯的嘗試:)
否 - 因爲int不能表示long int的「所有可能的值」。 – Floris 2013-02-21 04:49:45
那麼,如果'long int'實際上比'int'大,反正... – zneak 2013-02-21 05:19:21