1樓:小夏在深圳
char就是1位元組(固定不變),short不少於2位元組,int不少於short,long不少於4位元組,且long不少於int,long long不少於long。
除了char,其他整型範圍都是相對而言的,確保後一種的寬度不低於前一種即可(可能相等),在不同的年代,計算機硬體發展不同,記憶體、外存容量也不同,主流編譯器在設計的時候會綜合考慮計算機硬體的情況,來設計每一種資料型別的實際寬度。
char型在任何情況下都是佔1個位元組,而比如int型,它的長度與環境的字長相同,在16位的環境中,它佔16位,2個位元組;32位環境中佔4個位元組。
擴充套件資料
在c語言中可以用sizeof運算子,獲取資料型別或者變數所佔的記憶體位元組數。示例**如下:
#include int main()
printf("%d\t%d\t%d\n", sizeof(int), sizeof(short), sizeof(long));
return 0;}
2樓:小費
其長度分別為一位元組,至少兩位元組,至少兩位元組和至少4位元組。除此之外,不要再依賴任何約定。
char型別的長度被定義為一個8位位元組,這很簡單。short型別的長度至少為兩位元組。在有些計算機上,對於有些編譯程式,short型別的長度可能為4位元組,或者更長。
int型別是一個整數的「自然」大小,其長度至少為兩位元組,並且至少要和short型別一樣長。在16位計算機上,int型別的長度可能為兩位元組;在32位計算機上,可能為4位元組;當64位計算機流行起來後,int型別的長度可能會達到8位元組。這裡說的都是「可能」,例如,早期的motorala 68000是一種16/32位的混合型計算機,依賴於不同的命令列選項,一個68000編譯程式能產生兩位元組長或4位元組長的int型別。
long型別至少和int型別一樣長(因此,它也至少和short型別一樣長)。long型別的長度至少為4位元組。32位計算機上的編譯程式可能會使short,int和long型別的長度都為4位元組——也可能不會。
如果你需要一個4位元組長的整型變數,你不要想當然地以為int或long型別能滿足要求,而要用typedef把一種固有的型別(一種確實存在的型別)定義為你所需要的型別,並在它的前後加上相應的#ifdef指令:
#ifdef four_byte_long
typedef long int4;#endif如果你需要把一個整型變數以位元組流的方式寫到檔案中或網路上,然後再從不同的計算機上讀出來,你可能就會用到這樣的型別。
如果你需要一個兩位元組長的整型變數,你可能會遇到一些麻煩!因為並不一定有這樣的型別。但是,你總是可以把一個較小的值存放到一個由兩個char型別組成的陣列中。
在c語言型別說明中,int、char、short等資料型別的長度
3樓:匿名使用者
具體不大一樣,char型在任何情況下都是佔1個位元組,而比如int型,它的長度與環境的字長相同,在16位的環境中,它佔16位,2個位元組;32位環境中佔4個位元組。
所以,如果在程式設計中牽扯到型別或變數的字長問題,建議用sizeof()獲取,較為保險,不要想當然的認為多少就是多少
4樓:阿冬
c語言標準中對於資料型別所佔寬度是這樣定義的:
char就是1位元組(固定不變),short不少於2位元組,int不少於short,long不少於4位元組,且long不少於int,long long不少於long。
也就是說,除了char,其他整型範圍都是相對而言的,確保後一種的寬度不低於前一種即可(可能相等),在不同的年代,計算機硬體發展不同,記憶體、外存容量也不同,主流編譯器在設計的時候會綜合考慮計算機硬體的情況,來設計每一種資料型別的實際寬度。
5樓:嘎嘎的壞壞先生
你要問什麼呢?就是選c啊。
32位和64位系統,c語言中char,short,int,long,char*,int*,int**各佔多少位元組
6樓:
1、在32位系統中:
char(1)位元組
short(2)位元組
int(2)位元組
long(4)位元組
char*(4)位元組
int*(4)位元組
int**(4)位元組
2、在64位系統中:
char(1)位元組
short(2)位元組
int(4)位元組
long(8)位元組
char*(4)位元組
int*(4)位元組
int**(4)位元組
擴充套件資料在c++中short佔2位元組,int、float、long都佔4位元組,double佔8位元組。
指標長度和地址匯流排有關。因為指標記錄的就是一個地址,那麼32位的就是4位元組,64位的就是8位元組。
char佔1位元組,short佔2位元組,int、float、long都佔4位元組,double佔8位元組,任意型別的指標都佔4個位元組。
7樓:肯帕奇諾
這個和編譯器有關。不同的編譯器不一樣。
在c語言中,int,char和short三種型別資料在記憶體中所佔的位元組數 40
8樓:蔣金多多多
總結一下哈
:針對bai大部分du32位機器來說所佔記憶體是:zhi char 字元型dao 1個;int整型2 個;short 2 個;但是,不同專的屬機器,和不同的編譯軟體下,都會不同。
所以你可以用sizeof()函式測試一下。例sizeof(char);
這裡補充下我的答案,之前回答這個問題時候,自己還是一名微控制器開發愛好者,c51微控制器中的int確實是16位,兩個位元組。
而現在的我從事應用軟體開發,在這些編譯器中(比如vs、gcc),int一般都是4位的(無論32位還是64位)。事實上,一個比較官方的解釋是:編譯器可以根據自身硬體來選擇合適的大小,但是需要滿足約束:
short和int型至少為16位,long型至少為32位,並且short型長度不能超過int型,而int型不能超過long型。這即是說各個型別的變數長度是由編譯器來決定的。
9樓:
16位編譯bai器
char :1個字
du節zhi
char*(即指標變數): 2個字dao節回short int : 2個位元組
int: 2個位元組
unsigned int : 2個位元組
float: 4個位元組
double: 8個位元組
long: 4個位元組
long long: 8個位元組
unsigned long: 4個位元組
32位編譯器
答char :1個位元組
char*(即指標變數): 4個位元組(32位的定址空間是2^32, 即32個bit,也就是4個位元組。同理64位編譯器)
short int : 2個位元組
int: 4個位元組
unsigned int : 4個位元組
float: 4個位元組
double: 8個位元組
long: 4個位元組
long long: 8個位元組
unsigned long: 4個位元組
64位編譯器
char :1個位元組
char*(即指標變數): 8個位元組
short int : 2個位元組
int: 4個位元組
unsigned int : 4個位元組
float: 4個位元組
double: 8個位元組
long: 8個位元組
long long: 8個位元組
unsigned long: 8個位元組
10樓:匿名使用者
理論像樓上說的這樣,實際上int型變數要看機器32位和64位機器是不同的,你可以用
sizeof()函式測試一下
11樓:六閒村
字元型 char 1 位元組
整型 int 2 位元組zhishort 2 位元組
長整dao型 long 4 位元組單精回度答 float 4 位元組雙精度 double 8 位元組
12樓:
完全同意二樓的說法。不同的機子位數是不一樣的!
在c語言中,int型別,long型別,float型別,double型別和char型別在16位和32位計算機中各佔幾個位元組?
13樓:小破孩之父
int型別,long型別,float型別,double型別和char型別
16位 2 4 4 4 1
32位 4 4 4 8 1
其實我覺得和編譯器也有關係
14樓:手機使用者
其實根據具體機器和編譯器有所不同,你用sizeof()這個函式看吧
15樓:通安易速璧
樓上正解。ansic標準裡是沒有規定佔多少位元組的,準確地說與你的計算機cpu位數和作業系統位數無關,型別大小是由編譯器廠商compiled時定義的,具體你可以在你編譯器sizeof看一下。
16樓:伍初陽菅英
不同的編譯器所規定的位元組數有所差異,可以用函式sizeof()進行
測試,例如想測試int型別佔多少位元組結果就是int型別所佔的位元組數!
c語言的問題,C語言的問題
union是聯合體,其中的所有變數共用一片記憶體空間,該空間長度為union中最長的變數長度,即int陣列i 2 的長度8。union會牽涉到大小端問題,而題中給出的陣列的第0個元素在低位並不能說明機器為大端序還是小端序,因為陣列的生長方向永遠向上,和大小端以及堆疊的生長方向沒有關係。這意味著這道題...
有關C語言的,有關c語言的?
第4行改為 int x,y,z 8 12行 加入變數int result 0 case result x y case result x y case result x y printf result 有關c語言的?有關c語言 toss 函式演算法有問題吧?不知道你那個演算法是什麼意思,有什麼依據!...
C語言的問題,C語言問題,求助
1.設x的值為3,則表示式 x x x x 的值為?x先進行4次加1運算為7,後再相加為28 2.用long a 0xffffff int b char c 定義。執行b a,c b b後。b c的值為?a為長整型三個位元組為全1,賦值給b後b是整型,b的2個位元組也是全1,但b是有符號整型第一位元...