C 整型提高

摘自維基百科express

整型提高是C程序設計語言中的一項規定:在表達式計算時,各類整形首先要提高爲int類型,若是int類型不足以表示則要提高爲unsigned int類型;而後執行表達式的運算。[1]設計

這一規則是由C語言的發明人丹尼斯·裏奇與肯·湯普遜創設的:[2]ip

A character, a short integer, or an integer bit-field, all either signed or not, or an object of enumeration type, may be used in an expression wherever an integer maybe used. If an int can represent all the values of the original type, then the value is converted to int; otherwise the value is converted to unsigned int. This process is called integral promotion.get

這段話的大意是:表達式中能夠使用整數的地方,就能夠使用枚舉類型,或有符號或無符號的字符、短整數、整數位域。若是一個int能夠表示上述類型,則該值被轉化爲int類型的值;不然,該值被轉化爲unsigned int類型的值。這一過程被稱做integral promotion。it

整型提高的意義在於:表達式的整型運算要在CPU的相應運算器件內執行,CPU內整型運算器(ALU)的操做數的字節長度通常就是int的字節長度,同時也是CPU的通用寄存器的長度。所以,即便兩個char類型的相加,在CPU執行時實際上也要先轉換爲CPU內整型操做數的標準長度。通用CPU(general-purpose CPU)是難以直接實現兩個8比特字節直接相加運算(雖然機器指令中可能有這種字節相加指令)。因此,表達式中各類長度可能小於int長度的整型值,都必須先轉換爲int或unsigned int,而後才能送入CPU去執行運算。io

相關文章
相關標籤/搜索