c語言long x這裡的long是什麼型別啊?占用幾個位元組

2022-03-10 07:13:22 字數 5981 閱讀 7929

1樓:匿名使用者

long是長整型資料

int是整型資料

在16位機上,int 2byte, long 4byte32機, int 4,long 4

64 int 4 ,long 8

2樓:匿名使用者

長整形咯

佔幾個位元組麼,試:

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

3樓:宜興李

long指長整型,32位的吧,4位元組

4樓:湮魂

int和long作為基本的整數型別,取值範圍和位數直接相關。如果是n位整數的話,最高位表示符號位,剩下的n-1位以補碼形式表示絕對值,因此範圍是整數區間[-2^(n-1),2^(n-1))。

int和long並沒有明確位數,具體和平台相關(有一點可以確定,sizeof(int)<=sizeof(long))。一般而言,32位機的int是32位的,於是範圍是[-2^31, 2^31)也就是[-2147483648, -2147483648)。而非int的位數取決於機器字長外還決定於軟體平台(作業系統、編譯器)上實現的特定的c語言資料模型(專指整數資料模型,不是資料庫裡討論的那個),只是一般32位平台上的long都比較統一(基本上都是lp32),為32位,範圍和int一致。

(如果是64位平台,除了windows上的llp64模型中long是32位外,lp64、ilp64、silp64的long都是64位)。

另外ls錯誤。首先用的無符號整數寫法是錯誤的,其次printf使用不當(應該用字長無關的%i保證結果正確),再次結果意義不明確。

unsigned int i= -1;

unsigned long l = -1;

printf("%i %i", i, l);

-1轉換為無符號數後表示負數的符號位「1」被作為最高非符號位,輸出的是無符號整數的最大值。

printf("%i %i", i >> 1, l >> 1);

輸出有符號整數最大值,該值加1再乘以-1後即得有符號整數最小值。

**[原創回答團]。

c語言long是幾個位元組?

5樓:

c語言中long是4個位元組,是一種資料型別,有兩種表現形式:有符號和無符號。

在有符號中,long的表示數的範圍為:-2147483648~2147483647

在無符號中,long的表示數的範圍為::0~4294967295

擴充套件資料:

整型變數可分為以下幾類:

基本型型別說明符為int,根據計算機的內部字長和編譯器的版本,在記憶體中可能佔2或4個位元組(通常分別在16位機和32位機上),其取值為基本整常數。

短整型型別說明符為short int或short,在記憶體中佔2個位元組,其取值為短整常數。

長整型型別說明符為long int或long,在記憶體中佔4個位元組,其取值為長整常數。

6樓:微雨去塵

32位系統中 long 是4個位元組;64位系統中long 是8個位元組c語言常用資料型別位元組數(32位系統環境下)1、void *:  4 bytes

2、 char:  1 bytes

3、short:  2 bytes

4、int:  4 bytes

5、long:  4 bytes

6、long long:  8 bytes7、float:  4 bytes

8、double:  8 bytes

9、long double: 12 bytes

7樓:侯雪旋

和char型別有關。c認為char的長度為1位元組,一般char為8位,long32位,則long為4位元組。但有些特殊系統中char可能不為8位,比如說16位,則32位long佔2個位元組。

c語言中 int long float double分別占用了多少個位元組??

8樓:

char/signed char/unsigned char: 1個位元組;char*(即指標變數):2個位元組(16位編譯器)4個位元組(32位編譯器)8個位元組(64位編譯器) short int:

2個位元組 int/unsigned int:2個位元組(16位編譯器)4個位元組(32/64位編譯器) long int: 4個位元組 float:

4個位元組 double: 8個位元組 long double: 8/10/12/16?

long/unsigned long:4個位元組(16/32位編譯器)8個位元組(64位編譯器) long long: 8個位元組 string:

字元個數+1...

9樓:

你可以用sizeof來測算乙個型別或乙個變數占用的記憶體大小。

比如:size_t size = sizeof(int);

常用型別大小如下:

型別大小bool

1 個位元組

char , unsigned char, signed char

1 個位元組

short, unsigned short

2 個位元組

int , unsigned int

4 個位元組

__int n

8、16、32、64 或 128 位元組依賴 n 的值。__intn 是 microsoft 專用的。

long, unsigned long

4 個位元組

float

4 個位元組

double

8 個位元組

long double 1

8 個位元組

long long

等效於 __int64。

c語言中int/float/double/long/unsighed long型分別佔幾個位元組?

10樓:天方夜譚的哆啦a夢

在c語言中不同的編譯器佔位會不同。

1、在16位系統裡佔的位元組

int型別2,long型別4,float型別4,double型別4和char型別1

2、在32位系統裡佔的位元組

nt型別4 ,long型別4 ,float型別4 ,double型別8和char型別1

擴充套件資料c語言中int long float double 等型別輸出表示%c輸出的是乙個單位元組字元

%f輸出的是單精度實數

%d輸出的是十進位制整形數

%e輸出的是科學記數法的實行數

%s輸出是字串

%g輸出雙精度實型數

%ld輸出的是long型別的數

%lld輸出的是long long 型別的數%u輸出的是無符號整形數

printf("%.10lf\n",f_a)輸出小數點後10位,否則預設是小數點後6位

double 型別的輸出為printlf("%lf",a);

例如:    double d=123456789.12345;

printf("%.2lf",d);

11樓:小夏在深圳

不同的計算機是不完全一樣的。

int 表示2或4位元組

float表示4位元組

double表示8位元組

unsighed long表示8個位元組

源**如下:

#include

int main()

擴充套件資料1、從 int 轉換成 float,數字不會溢位,但是可能被捨入。

2、從 int、float 轉換成 double,能夠保留精確的數值。因為 double 有更大的範圍和更高的精度(有效位數)。

3、從 double 轉換成 float,因為 float 範圍要小一些,所以值可能溢位成 +∞ 或 -∞。另外由於float精度較小,還可能被捨入。

4、從 float、double 轉換成 int,值將會向零捨入。如1.999會被轉成1,-1.999會被轉成-1。同時值可能會溢位。

12樓:天雲小店

各資料型別所佔字元數如下:

int                       4位元組

float                    4位元組

double                8位元組

long                    4位元組

unsigned long   4位元組

可以通過如下的語句進行驗證。

printf("%d\n", sizeof(int));    // 計算int型所佔位元組數

printf("%d\n", sizeof(float));  // 計算float型所佔位元組數

printf("%d\n", sizeof(double)); // 計算double型所佔位元組數

printf("%d\n", sizeof(long));   // 計算long型所佔位元組數

printf("%d\n", sizeof(unsigned long));  // 計算unsigned long型所佔位元組數

13樓:謝應宸

不同的編譯器結果不一樣。

樓上的答案太絕對,在某些編譯器可能是這樣的,但是換個編譯器就不一定一樣了。

比如在vc中int也是4個位元組。

~~~~~~~~~

恩,老的書上int確實是2位元組。

悲哀啊悲哀。。。

14樓:匿名使用者

在turboc++中int佔2個位元組,float和long佔4個位元組,char佔乙個位元組. visualc++中int.long.

float佔四個位元組,char佔乙個位元組. 其它編譯器會有所不同.....

15樓:領先天下第二

int 2 位元組

long 4 位元組

float 4 位元組

double 8 位元組

char 1位元組

16樓:匿名使用者

標準的如1樓所言,這是書本上的答案.

而實際上就是2樓所說的.

c語言中 long long ;long double 占用多少記憶體空間?用什麼控制字元?

17樓:

long long是long long int的略寫,占用8位元組空間。long double占用10位元組空間,但有的編譯器並不認可10位元組,還是8位元組,比如在vc++6.0下,用sizeof(long double)測出來的值仍然是8。

18樓:匿名使用者

long long ;long double; 資料型別的大小在不同的硬體平台及作業系統上的c編譯器實現可能都不一樣,具體可以用 sizeof(資料型別) 如 sizeof(long long) 計算出來。在 windos xp 作業系統下, vs2008 中的 vc++ 中, long long 和 long double 都是 8 個位元組。

19樓:匿名使用者

printf("%d %d\n",sizeof(long long),sizeof(long double)); //這個個語句即可測試出來。

20樓:匿名使用者

long 4個。double 8個。沒用過long long 和long double 這兩種資料型別

c語言中long型佔多少個位元組?

21樓:

不同的環境略有差異。

寫一段程式驗證一下就知道了:

#include

void main()

我這裡是4個位元組,32位。

C語言中long型轉換成float型怎麼轉換,假如數字較大時

在c語言中,long 型在32位下,長度為4位元組,表示範圍為 2147483648 2147483647 在64位下為8位元組,範圍為 9223372036854775808 9223372036854775807 也就是9.2e18 而float 範圍是 3.4e 38 和 3.4e 38 明顯...

c語言中,為什麼在64位系統中long跟指標的大小是8,而

64位系統,這個位數指的是cpu 裡面的通用暫存器的資料寬度為64位,也就是說一個地址佔二進位制位數是64,所以sizeof double sizeof int sizeof char 64 8 8 32位系統,同理,他的一個地址佔32位二進位制空間,sizeof double sizeof int...

C語言,這裡編譯沒有錯誤,為什麼執行時出錯

x是整型,在最後乙個printf函式 中應該用 d,你用的是 lf。如果你要回用 lf,程式應該改答為 include stdio.h void main 是求最大公約數吧?printf lf x 中的控制符不正確,應改為 d,即printf d x emm,我跑了下沒問題啊,可以說下程式是做什麼的...