當前位置:首頁 » 編程語言 » c語言上的位元組數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言上的位元組數

發布時間: 2023-07-18 03:52:10

A. c語言int占幾個位元組

在一般的電腦中,int佔用4位元組,32比特,數據范圍為-2147483648~2147483647[-2^31~2^31-1]

在之前的微型機中,int佔用2位元組,16比特,數據范圍為-32768~32767[-2^15~2^15-1]

使用printf輸出int佔用位元組數量:

printf("%d",sizeof(int));

除了int類型之外,還有short、long、long long類型可以表示整數。

unsigned int 表示無符號整數,數據范圍為[0~2^32-1]

(1)c語言上的位元組數擴展閱讀:

int 占 4個位元組 只能表示整數。

char 佔1個位元組 只能表示字元。

float 和double都是表示小數,float佔4位元組,double 佔8位元組,表示的數據范圍不一樣。

B. 一個數字在C語言中是多少個位元組

在C語言中,一個數字佔4個位元組或8個位元組。(以下試驗都是基於32位計算機系統)
當該數字為整數時,佔4個位元組(默認轉換為int類型);
當該數字為小數時,佔8個位元組(默認轉換為double類型)。
可以通過如下的程序段來驗證:
printf("%d\n",
sizeof(4));
//
輸出4,即佔4個位元組(轉換為int類型,相當於sizeof(int))
printf("%d\n",
sizeof(4.5));
//
輸出8,即佔8個位元組(轉換為double類型,相當於sizeof(double))

C. c語言的位元組數是什麼意思

int佔多少個位元組是由編譯器決定的,ANSI標準定義int是佔2個位元組.
TC是按ANSI標準的,它的int是佔2個位元組的.
你可以在TC里試.printf("%d",sizeof(int));結果是2;
但是在VC里,一個int是佔4個位元組的,在VC裡面,
printf("%d",sizeof(int));
cout<<sizeof(int);結果都是4.
不同的編譯器,規定也不一樣.
float,double也是一樣的,在不同的編譯器里,占的位元組是不一樣的.

D. C語言中一個英文字母.漢字.數字 分別都占幾個位元組啊

1、英文字母:如果是char 型,那麼是佔用1個位元組,如果是string型,應該是兩個。

char c = 'a';//它佔用一個字元

char c[] = "a";//佔用兩個。

char c[] = "abcde";//佔用4+1 = 5 個,結尾有一個''

2、數字:這個有很多中,從小到大分別為:short、int、float、long、double
分別為:1個、2個、4個、8個、16個

3、漢字:理論上說,一個漢字佔用兩個字元。比如:中國,就佔用4個字元,如果是:

char c[] = "中國";//佔用4+1 = 5個字元

char c = '中';//錯誤,不能這樣計算

(4)c語言上的位元組數擴展閱讀

1、C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

2、C語言的數據類型有:整型、實型、字元型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種復雜的數據結構的運算。並引入了指針概念,使程序效率更高。

3、由於C語言允許直接訪問物理地址,可以直接對硬體進行操作,因此它既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位(bit)、位元組和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫系統軟體。

參考資料 網路-C語言

E. C語言中字元佔多少個位元組

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個位元組。

F. C語言字元數占幾個位元組,又是多少位。

這個要看字元數是什麼數據類型,可以用sizeof(類型)操作符來測試位元組數。
1、英文字母:如果是char 型,那麼是佔用1個位元組,8位。如果是string型,應該是兩個位元組,16位,因為末尾還有個\0字元。
比如:
char c = 'a';//它佔用一個字元
char c[] = "a";//佔用兩個。
char c[] = "abcde";//佔用4+1 = 5 個,結尾有一個'\0'
2、數字:有很多種類,從小到大分別為:
short、int、float、long、double
位元組為:1個、2個、4個、8個、8個
位數為:8位、16位、32位、64位、64位
3、漢字:理論上說,一個漢字佔用兩個位元組,16位。比如:中國,就佔用4個位元組,例如:
char c[] = "中國";//佔用4+1 = 5個字元

G. c語言中字元串所佔位元組數怎麼算

在純ASCII碼下,位元組數=字元串長度=字元個數,因為每個字元就一個位元組。
在Unicode下,位元組數/2=字元串長度=字元個數,因為每個字元都是2個位元組。
在ASCII碼與其它雙位元組字元系統混用時,位元組數=ASCII碼字元個數+雙位元組字元個數*2,
而此時字元串長度到底怎麼統計就不好說了,
【有的語言如C語言,此時字元串長度=位元組數,】
有的語言如JS,此時字元產長度=字元個數。

H. c語言類型所佔位元組數

類型

常見的有char、int、long、short、float、double及指針等.

字元類型

這里單只char,char變數在內存中存儲的是字元對應的ASCII碼值。所以長度也是固定的,為1個位元組。

整數類型

查了資料發現對各個類型的整數佔用位元組數是有一個規定的,雖然16位32位或者64位的機子各種類型所佔用的長度並不一樣。規則如下:

short 至少佔用2個位元組。
int 建議為一個機器字長。32位環境下機器字長為4位元組,64位環境下機器字長為8位元組。
short 的長度不能大於 int,long 的長度不能小於 int。
所以說,short並不一定短,long並不一定短,有可能都和int一樣長。

浮點數(小數)

C中浮點數有兩種,float和double,不像整數,小數的長度始終是固定的,float佔用4個位元組,double佔用8個位元組。

指針

C中指針即為地址,所以編輯器的定址空間則是指針的地址范圍。所以指針變數在32位機器的定址空間為2^32,要將所有地址都表示出來則需要為4個位元組長度,所以要佔用4個位元組長度。同理64位的編譯器則需要8個位元組長度。

I. C語言中數據類型所佔位元組數與它取值范圍的關系

C語言中的數據類型,簡單的可以分為整數類型和浮點數類型。所佔位元組數與取值范圍的關系實際上是整數編碼和浮點數編碼的問題,整數編碼的三種方式是原碼、反碼、補碼,很容易理解,浮點數的編碼格式使用的是IEEE754編碼。


1、整數編碼以字元類型為例。

字元類型佔1個位元組,共8位二進制bit位,因此排列組合數,有2^8 = 256種編碼的方法。如果表示無符號字元類型,那一般來說表示【0,255】這256個數。


如果表示有符號char類型,如果表示正數,那最高位符號為0,因此可表示的最正整數是:

0-111 1111 ,轉化成十進制就是127。同樣的道理,符號為1表示負數。最小的負數是

1-000 0000,轉化成十進制數就是-128,因此有符號char類型表示的范圍是[-128,127]。


一般來說,假設整型數據類型占的二進制位數n,如果表示無符號整數則取值范圍是[0,2^n-1],如果表示有符號整數,【-2^(n-1) , 2^(n-1) - 1] 。


2、浮點數類型

浮點數編碼一般採用的是IEEE754的編碼規則,這個編碼格式主要指出了浮點數有效數字、指數以及符號位所佔的二進制位數。簡單概括為:


格式 長度 符號位 指數位 尾數位 有效位數 指數偏移 尾數說明

單精度 32 1 8 23 24 127 有一位隱含位

雙精度 64 1 11 52 53 1023 有一位隱含位

擴展雙精度 80 1 15 64 64 16383 沒有隱含位

注意:擴展雙精度格式沒有隱含位,因此它的有效位數與尾數位數一致,而單精度和雙精度格式均有一位隱含位,因此它們的有效位數比尾數位數多1。


一般很少自己手動來算浮點數的取值范圍,可以使用如下程序來計算。

#include<stdio.h>
typedefstructFP_SINGLE
{
unsigned__int32fraction:23;
unsigned__int32exp:8;
unsigned__int32sign:1;
}fp_single;
typedefstructFP_DOUBLE
{
unsigned__int64fraction:52;
unsigned__int64exp:11;
unsigned__int64sign:1;
}fp_double;
typedefstructFP_EX_DOUBLE
{
unsigned__int64fraction;
unsigned__int32exp:15;
unsigned__int32sign:1;
}fp_ex_double;
intmain()
{
floatx;
fp_single*fp_s=(fp_single*)&x;
fp_s->sign=0;
fp_s->exp=0xfe;
fp_s->fraction=0x7fffff;
printf("float最大數:%le ",(double)x);
fp_s->sign=0;
fp_s->exp=0x1;
fp_s->fraction=0x0;
printf("float最小數:%le ",(double)x);
fp_s->sign=0;
fp_s->exp=0;
fp_s->fraction=0x1;
printf("float最小弱規范數:%le ",(double)x);
doubley;
fp_double*fp_d=(fp_double*)&y;
fp_d->sign=0;
fp_d->exp=0x7fe;
fp_d->fraction=0xfffffffffffff;
printf("double最大數:%le ",y);
fp_d->sign=0;
fp_d->exp=0x1;
fp_d->fraction=0x0;
printf("double最小數:%le ",y);
fp_d->sign=0;
fp_d->exp=0;
fp_d->fraction=0x1;
printf("double最小弱規范數:%le ",y);
charch[10];
fp_ex_double*fp_ex_d=(fp_ex_double*)ch;
fp_ex_d->sign=0;
fp_ex_d->exp=0x7ffe;
fp_ex_d->fraction=0xffffffffffffffff;
//不知道擴展雙精度浮點數如何輸出,
//不過可以用od跟蹤,然後找到ch[0]的地址,在數據窗口中選擇浮點80為長雙精度,
//就可以看到數值了。
fp_ex_d->sign=0;
fp_ex_d->exp=0x1;
fp_ex_d->fraction=0x8000000000000000;
fp_ex_d->sign=0;
fp_ex_d->exp=0;
fp_ex_d->fraction=0x1;
return0;
}

J. c語言怎樣計算所佔位元組

主要是看變數定義的類型;
char佔一個位元組,int佔四個位元組,float佔四個位元組,double佔8個位元組;
當要注意的是在字元串中要加個'\0',要多算一個位元組。