c語言int取值范圍
① c語言中unsigned int 類型取值范圍最大能到多少
在32位的編譯器上,unsigned int最大值:4294967295。
c語言標准庫中的limits.h頭文件定義了unsinged int的最大值宏——UINT_MAX,可以直接使用printf函數將其列印出來。
#include<stdio.h>
#include<limits.h>
intmain()
{
printf("unsignedint最大值:%u ",UINT_MAX);
return0;
}
(1)c語言int取值范圍擴展閱讀:
舉例
16位系統中一個int能存儲的數據的范圍為-32768~32767,而unsigned能存儲的數據范圍則是0~65535。
由於在計算機中,整數是以補碼形式存放的,根據最高位的不同,如果是1,有符號數的話就是負數,如果是無符號數,則都解釋為正數,另外,unsigned若省略後一個關鍵字,大多數編譯器都會認為是unsigned int。
在sql語句中的意義
sql語句中,創建一個數據表時
create table user{
user_id int unsigned...
...
}
當中的unsigned表示,數據項user_id恆為正整數還可以為整數0,0不屬於正整數。
② C語言int的取值范圍
C語言int的取值范圍在32/64位系統中都是32位,范圍為-2147483648~+2147483647,無符號情況下表示為0~4294967295。
C/C++編程語言中,int表示整型變數,是一種數據類型,用於定義一個整型變數,在不同編譯環境有不同的大小,不同編譯運行環境大小不同。
C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
基本數據類型:
void:聲明函數無返回值或無參數,聲明無類型指針,顯示丟棄運算結果。(C89標准新增)
char:字元型類型數據,屬於整型數據的一種。(K&R時期引入)
int:整型數據,表示範圍通常為編譯器指定的內存位元組長。(K&R時期引入)
float:單精度浮點型數據,屬於浮點數據的一種。(K&R時期引入)
double:雙精度浮點型數據,屬於浮點數據的一種。(K&R時期引入)
_Bool:布爾型(C99標准新增)
_Complex:復數的基本類型(C99標准新增)
_Imaginary:虛數,與復數基本類型相似,沒有實部的純虛數(C99標准新增)
_Generic:提供重載的介面入口(C11標准新增)
(2)c語言int取值范圍擴展閱讀:
1989年,ANSI發布了第一個完整的C語言標准——ANSI X3.159—1989,簡稱「C89」,不過人們也習慣稱其為「ANSI C」。
C89在1990年被國際標准組織ISO(International Standard Organization)一字不改地採納,ISO官方給予的名稱為:ISO/IEC 9899,所以ISO/IEC9899: 1990也通常被簡稱為「C90」。
1999年,在做了一些必要的修正和完善後,ISO發布了新的C語言標准,命名為ISO/IEC 9899:1999,簡稱「C99」。
在2011年12月8日,ISO又正式發布了新的標准,稱為ISO/IEC9899: 2011,簡稱為「C11」。
③ 為什麼在 c語言中,int 有個范圍,這個范圍怎麼計算的
int型取值范圍為-32768~32767是針對int型佔2個位元組來說的。
下面具體說明該范圍的求法:
int型佔2個位元組,共16位。
int型能表示的最大正數為(最高位為符號位,正數的符號位為0):0111
1111
1111
1111
也即2^15-1=32767
int型能表示的最小負數為(最高位為符號位,負數的符號位為1):1000
0000
0000
0000(補碼),而在計算機中負數是利用補碼進行存儲的,所以將1000
0000
0000
0000轉換為源碼就是1000
0000
0000
0000,也即-2^15=32768
所以int型取值范圍為-32768~32767
④ 64位系統下C語言中int值的取值范圍
64位機器中,int佔32位,取值范圍為-2147483648~2147483647(-2^32~2^32-1)。
int類型的情況:
shortint類型可能佔用比int類型更少的存儲空間,C保證short類型至少16位長,用於只需小數值的場合以節省空間。
longint類型(或簡寫為long類型)可能佔用比int類型更多的存儲空間,C保證short類型至少32位長,用於使用大樹枝的場合。
longlongint類型(或簡寫為longlong類型)可能佔用比long類型更多的存儲空間,C保證short類型至少64位長,用於使用更大數值的場合。
(4)c語言int取值范圍擴展閱讀
C語言的整型溢出問題int
int為4位元組32位,其中首位用0表示正數,用1表示為負數。因此對於
最大正數可以表示為:0x7fffffff(7的二進制為0111,f二進制為1111)
最大負數(-1)可以表示為:0xffffffff
最小負數可以表示為:0x80000000(8的二進制為1000)
負數為正數的源碼取反碼再取補碼,過程如下:
1、-1的原碼:
2、得反碼:
3、得補碼:
⑤ C語言中,unsigned int型數據的取值范圍是
0到65535。
舉例:
unsigned a;
a=5;
或:unsigned int a;
a=5;
16位系統中一個int能存儲的數據的范圍為-32768~32767,而unsigned int能存儲的數據范圍則是0~65535,在計算機中,整數是以補碼形式存放的。
系統使用
無符號數只表示大小,有符號數最高位(二進制情況下最高位表示符號位),在同一操作系統下,有符號數和無符號數的最大數值在大小上的關系是2*x+1。二者表示的數據范圍大小是相同的,但是范圍不同。
C支持所有整形數據類型的有符號數和無符號數運算。盡管C標准並沒有指定某種有符號數的表示,但是幾乎所有的機器都使用二進制補碼。
通常,大多數數字默認都是有符號的,C也允許無符號數和有符號數之間的轉換,轉換原則是基本的位表示保持不變。因此在一台二進制補碼機器上,當從無符號數轉換為有符號數時,效果就是應用U2Tw,而從有符號轉換為無符號數時,就是應用函數T2Uw,其中w表示數據類型的位數。
⑥ 有關C語言中int型數據的取值范圍的問題
是這樣的,現在計算機中表示有符號數用的幾乎都是2的補碼表示法(two's complement),像C語言中的int、long等就是用這種表示法。而表示無符號整數(即非負整數,如unsigned int)用的是原碼表示,計算其十進制真值時直接按權展開就行。
將用2的補碼表示的二進制轉化成十進制有好幾種方法,最規范的一種是按下面的公式計算:
x[n-1]×(-2^(n-1)) + x[n-2]×2^(n-2)+ … + x[1]×2^1 + x[0]×2^0
其中n表示二進制位數,x[n-1]表示第n-1位數(從0開始,從右往左數),注意最高位是乘以(-2^(n-1)),有負號,其它項無負號。
比如設(1111)B用2的補碼表示,上面的公式計算其十進制真值的過程是:
........(1111)B =1×(-2^3) + 1×2^2 + 1×2^1 + 1×2^0
................= -8 + 4 + 2 + 1
................= -1
所以(1111)B = (-1)D
實際上,2的補碼表示的16位二進制,其十進制真值如下:
……二進制……………………十進制
0000 0000 0000 0000............0
0000 0000 0000 0001............1
0111 1111 1111 1110............32766
0111 1111 1111 1111............32767
1111 1111 1111 1111............-1
1111 1111 1111 1110............-2
1000 0000 0000 0001............-32767
1000 0000 0000 0000............-32768
所以樓主在上面寫的「32767即二進制的1111111111111111」是不對的,(1111 1111 1111 1111)B表示十進制數的 -1。
2的補碼表示法(其它表示法還有1的補碼表示法、移碼表示法等)是在計算機組成原理課程中講的。
要了解更多2的補碼表示法,樓主可以Google中搜索「Two's complement」,或者參考:
http://tieba..com/f?kz=278455703
⑦ C語言數據類型的取值范圍
取反後是 0111 1111 1111 1111,加1後還是 1000 0000 0000 0000。
舉個便於理解補碼的例子:一個時鍾面,可以表示12個小時,無符號時可以表示0-11
如果要表示負數,6字代表-6點,7字代表-5點,能表示的范圍是 -6 到 +5。
最大的負值的絕對值比最大正數大1。
這樣符號為正的數字和符號為負的數字是一樣多的。
⑧ c語言中長整型和整型的范圍
1、c語言中長整型常量:的數值范圍最小是十進制的-2147483647~+2147483647,在計算機中最少佔用4個位元組。位元組長度跟操作系統和編譯器有關,longint長度至少32位,而64位類Unix系統為64位。
2、c語言中整型常量:是通常的整數,包括正整數、負整數和0,其數據類型顯然是整型。整型常量內存大小和數值范圍取決於編譯器。
(8)c語言int取值范圍擴展閱讀
c語言中VB中的長整型
VB中整數類型有兩種:Integer和Long,都是有符號的整數
Integer變數存儲為16位(2個位元組)的數值形式,其范圍在-32,768至32,767之間。Integer的類型聲明字元是百分比符號(%)。
Long(長整型)變數存儲為32位(4個位元組)有符號的數值形式,其范圍從-2,147,483,648到2,147,483,647(約為21億)。Long的類型聲明字元為和號(&)。
⑨ c語言中為什麼short和int類型的取值范圍一樣
如果在16位計算機系統(如Turbo C)中,short類型和int類型都是佔2個位元組的內存空間,所以其取值范圍都是-2^15~2^15-1
如果在32位計算機系統(如Visual C++)中,short類型佔2個位元組,而int類型佔4個位元組,因此它們的取值范圍會不一致,此時,short的取值范圍為:-2^15~2^15-1;而int的取值范圍為:-2^31~2^31-1
⑩ c語言中int,long的取值范圍是多少
主要看編譯器怎麼對這些類型的數據怎麼處理了,不同的編譯器可能會給int分配不同的空間,一般在32位系統中會給int分配4個位元組,以前的單片機編譯器一般會分配1個位元組,現在64位的編譯器一般會分配8個位元組,不同的位元組,他們能表示的取值范圍也就不一樣了。
同樣,有符號數和無符號數,表示的數據范圍也不一樣。比如單片機中的編譯器C51,分配一個位元組:
無符號數,最大也就是0XFF,即十進制的255。
有符號數,正數0~127,負數-128到-1
其它依次類推
long同樣類似