以上內容是關於C中的隱式積分促銷/轉換,取自Mike Banahan的書 Section 2.8.1.1 (Link)。以下是確切段落的內容:「如果一個int可以保存原始類型的所有值,則該值被轉換爲int,否則轉換爲unsigned int」 - 這意味着什麼?
由C以低於int的精度進行算術運算,因此幾乎每當您使用表達式中列出的某個對象時,都會隱含這些轉換。所述轉化率定義爲如下:
每當一個短或一個char(或我們 尚未達到的位字段或枚舉類型)具有積分優惠施加
- 如果int可以保持所有的原始類型,則 值被轉換的值的爲int
- 否則,轉換將是無符號整型
以下是我對粗體部分的疑惑。請清除以下內容:
- 是不是「其他」部分是多餘的?如果不是所有的短或焦炭類型適合的INT默認鑑於INT比無論是在大小? 短不適合int和要求無符號int甚至出現的問題?
- 「其他」部分是如何有效的 - 如果一個負短整數被隱式轉換爲無符號整型,它的值是否會改變?
儘管我很想將它視爲微不足道,但我覺得得到一個合適的解釋會更好。謝謝。
int可以支持短的所有值,但不一定是無符號的所有值短。 – 2014-09-21 02:51:51