為什么在 c語言中,int 有個范圍,這個范圍怎么計算的?

為什么在 c語言中,int 有個范圍,這個范圍怎么計算的?

int型取值范圍為-32768~32767是針對int型占2個字節(jié)來說的。下面具體說明該范圍的求法:int型占2個字節(jié),共16位。

關(guān)于int的取值范圍

int是一種數(shù)據(jù)類型,在編程語言C中,是用于定義整數(shù)類型變量的標識符。在一般的電腦中,int占用4字節(jié),32比特,數(shù)據(jù)范圍為-2147483648~2147483647[-2^31~2^31-1]。

在微型機中,int占用2字節(jié),16比特,數(shù)據(jù)范圍為-32768~32767[-2^15~2^15-1]。

擴展資料:
如果編寫者指定一個數(shù)超出了 int的范圍,將會被解釋為 float。如果float超出了?int的范圍,則結(jié)果不確定,因為沒有足夠的精度使float給出一個確切的整數(shù)結(jié)果。在此情況下沒有警告,甚至沒有任何通知。
要明示地將一個值轉(zhuǎn)換為 int,用 (int) 或 (integer)?強制轉(zhuǎn)換。

不過大多數(shù)情況下都不需要強制轉(zhuǎn)換,因為當運算符,函數(shù)或流程控制需要一個 int參數(shù)時,值會自動轉(zhuǎn)換。

在C中int的取值范圍為什么是這樣的

在C中,int是一個有符號的整數(shù),其**位表示符號。0為+,1為-。

在計算機中,通常采用補碼來表示一個二進制的數(shù)。

根據(jù)補碼的原則,正數(shù)的補碼為其本身,負數(shù)的補碼為其對應的二進制代碼去反加1。故正數(shù)**值(111)在C中表示為:01111=2^15-1=327670表示為:0000000000000000-00000=-2^15=-32768上述二進制代碼的補碼為:00000,由于所有補碼體系中沒有代碼與該值重合,于是就人為的定義為負值的最小值了。

為什么int的取值范圍是-32768~32767,真正懂的回答下,不懂就不要亂答了

int 的取值范圍和開發(fā)環(huán)境平臺有關(guān),不一定是 -32768~32767 之間。 只有在16位的環(huán)境平臺上才是 -32768~32767 之間,之所以是 -32768~32767 之間的原因是:計算機使用的是二進制,那么16位環(huán)境平臺下的取值范圍則為 2 的 16 次方 為 32768,由于還要包括 負數(shù) 和 0,所以取值范圍則為 -32768~32767 之間。

現(xiàn)在普遍是32位的環(huán)境平臺,所以 int 的取值范圍是 2 的 32 次方,-2147483648 ~ 2147483647 之間,如果是64位的環(huán)境平臺,取值范圍會更大。

這也是為什么位數(shù)越高的操作系統(tǒng)和軟件,其處理能力越強大的原因。

為什么int型的范圍是-128到127?假設int是8位的

因為2進制用補碼表示負數(shù)補碼是原碼各位取反+1,**位為1則為負數(shù)則10000000是**的負數(shù),-1后為01111111取反后為10000000則為128正數(shù)**是01111111百科,為127