C語言int和long int的區別是什麼

時間 2022-03-08 15:10:35

1樓:匿名使用者

不同平臺, int 和long int 長度可能不一樣,

這時候在x86平臺下,你的scanf("%d",&b)輸入long int就會出錯,

這又和位元組序有關,x86系列cpu採用little endian方式儲存資料,簡單的說就是資料的高位元組在低地址,低位元組在高地址.

將&b開始的儲存空間從低位元組->高位元組依次記為b0 b1 b2 b3 b4 b5 b6 b7

當b 為int 則scanf("%d",&b)將資料儲存在b0 b1 b2 b3地址中,

低位元組存放在b3,如你輸入的23就存在b3中,而b0=b1=b2=0.

當b為long int時,如果是64位cpu,則long int長度為8位元組,這時實際資料的低位元組應該存放在b7中,最高位元組存放在b0中.可是你的scanf語句的引數確將b當成整數型別,輸入的資料低位元組不是存放在b7只是儲存在b3,結果本來應該是b7=23 b0=b1=...b6 = 0,可是你的錯誤導致了b3=23,b0=b1=b2=0, b4,b5,b6,b7隨機數.

所以當b為long int時,改成scanf("%ld",&b)就對了.

2樓:風若遠去何人留

在c語言中,int即整型型別,long int等同於long,為長整型型別。

二者區別與編譯器相關。

1 16位編譯器。

int佔2位元組,範圍為-32768~32767

long int佔4位元組,範圍為-2147483648~2147483647

2 32位編譯器。

int 和long均佔4位元組,範圍均為-2147483648~2147483647

3 64位編譯器。

int 佔4位元組,範圍為-2147483648~2147483647

long因平臺實現不同而不同,有4位元組,6位元組和8位元組三種。可以列印sizeof(long)檢視。

3樓:痞子_無敵

試試輸入的時候 改為 scanf("%ld",&b);

4樓:匿名使用者

用long int定義a b後也是對的啊 我試了

c語言中long long int有什麼特性?

5樓:

c99標準

64位長整範圍

-2^63到2^63-1

宣告:long long int a;

scanf("%lld",&a);

printf("%lld",a);

6樓:育知同創教育

long long int是2的64次方

也就是-2^63到2^63-1

7樓:匿名使用者

?是想問「long int」嗎?它的取值範圍是-2147483648~2147483647

c語言裡int和short型變數的區別是什麼??

8樓:八哥說科技

1、佔用位元組根據機型不同會有不同:

在一般的電腦中,int佔用4位元組,32位元,在之前的微型機中,int佔用2位元組,16位元。在32位平臺下如windows(32位)中short一般為16位。

2、數值範圍不同:

int在一般的電腦中,資料範圍為-2147483648~2147483647[-2^31~2^31-1],在之前的微型機中,int資料範圍為-32768~32767[-2^15~2^15-1]。c++ & c short為一種資料型別,範圍-32768~+32767。

9樓:匿名使用者

一、位元組數不同

1、int:int佔用32位元組,32位元。

2、short:短整型變數不得低於16位,即兩個位元組。

二、範圍不同

1、int:資料範圍為-2147483648~2147483647[-2^31~2^31-1]。

2、short:資料範圍為範圍-32768~+32767。

三、特點不同

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

2、short:依據程式編譯器的不同short定義的位元組數不同。

10樓:風若遠去何人留

區別如下:

1 佔用空間不同。

int佔4個位元組,short佔2個位元組。

2 可以表示數的範圍不同。

int 的範圍為-2147483648~ 2147483647;

short的範圍為 -32768~ 32767。

3 用來輸入輸出的格式字元不同。

int用%d, short用%h。

用來輸出的時候,short可以用%d。除此以外,不能混用。

11樓:匿名使用者

c++標準規定,int佔一個機器字長。在32位系統中int佔32位,也就是4個位元組,而在老式的16位系統中,int佔16位,即2個位元組。而c++標準中只限制規定short int不能超過int的長度,具體長度的可以由c++編譯器的實現廠商自行決定。

目前流行的32位c++編譯器中,通常int佔4位元組,short int佔2位元組。其中short int可以簡寫為short。類似地,c++標準只限制了long int不得小於int的長度,具體也沒有作出限制。

12樓:河蟹和諧河蟹

譚浩強的書太腦殘,他那些東西都應該進博物館int一般都是4位元組(32位)或者8位元組(64位)short一般是2位元組(16位)相當於word或者int16不過有個別作業系統或者編譯器略有不同

13樓:匿名使用者

最本質的區別在於型別所佔的位元組數。一般來說,int佔四位元組,short佔兩位元組。

計算機c語言中int和short還有long有什麼區別,什麼時候用int,什麼時候用其他的?

14樓:匿名使用者

上面的朋友說的都很明確了,從使用的角度來講因為現在計算機速度非常快short已經很少用應用了,通常用int,但是數量比較巨大就要用long,當你覺得數會很大的時候就定義long,通常涉及到金額,金錢,都用long

15樓:匿名使用者

int 簡單一點說就是表示範圍的大小,short < int < long,不過一般都習慣用int,

short的位置99可以用int代替,當然也可以用long代替,只不過int已經能滿足一般使用,9位數。再大了就得用long行或者i64int了

16樓:匿名使用者

int是4個位元組,short是2個位元組,long是8個位元組

c語言中int short long 的具體區別是什麼?

17樓:匿名使用者

三種型別,在型別定義、佔用位元組數、資料範圍等方面存在不同點。

1、定義不同

int型別稱為整型;

short型別稱為短整型;

long型別稱為長整型;

2、佔用位元組數不同

short int型變數兩個位元組(兩個位元組);

int型別四個位元組(32位機中);

long int取值為8個位元組(32位機中);

3、資料範圍不同

short int型變數取值為-(2的16次方)+1 到 (2的15次方)-1;

int型別變數取值為-(2的32次方)+1 到 (2的31次方)-1;

long型別變數取值為-(2的64次方)+1 到 (2的63次方)-1;

擴充套件資料

1、具體佔用幾個位元組c語言並沒有規定,c語言做了寬泛的限制:

1)、short int型別至少佔用2個位元組。

2)、int型別建議為一個機器字長。32位環境下機器字長為4位元組,64位環境下機器字長為8位元組。

3)、short型別的長度不能大於 int,long型別的長度不能小於 int。

參考資料

18樓:吉祥二進位制

最本質的區別在於型別所佔的位元組數。一般來說,int佔四位元組,short佔兩位元組,long佔4或者8位元組。

在c語言中可以用sizeof運算子,獲取資料型別或者變數所佔的記憶體位元組數。示例**如下:

#include

int main()

19樓:匿名使用者

short,int,long都表示整型值,儲存空間的大小不一樣。一般,short為半個機器字長,int為一個機器字長,而long為一個或兩個機器字長(在32為機器中int和long字長相同)。對於普通電腦都是32為字長所以:

short 為2位元組int ,long 為4位元組

20樓:匿名使用者

int 是整型 有16位 能表示從 —32768到32767之間的數字short int 跟int 沒什麼差別 都是16位 表示數字的範圍也一樣long int 是長整型 能表示從2e-30到2e30-1之間的數字

21樓:匿名使用者

三者在記憶體中佔得位元組相同,能表示得最大值最小值也相同。就連分別對應的unsigned型也是。

c語言變數定義char、int、long有什麼區別?

22樓:匿名使用者

一個變數再

bai定義是型別du就固定了。如int a在定義域zhi內a都是整形。當然可以用dao強制型別轉換內來改變。你

容可以用sizeof()來測任意一個變數的長度。

如 對於int a ;sizeof(int)=2,sizeof(a)=2;表示int性和a都是2位元組資料。

一般int char都是2位元組。

float就是單精度其範圍是10e-38到10e38,有效位為6-7.(e是指數意思)

double就是雙精度其範圍是10e-308到10e308,有效位15-16.

long doule是長雙精度其範圍是10e-4931到10e4931.有效位18-19.

%7表示輸出這個資料的長度為7,一般是為了資料顯示整齊。

如我輸出1234,只有4位,那我就要在自動不3各空格。

當資料超出預定位寬時好像是按實際位輸出,這個有點記不清了。

希望我的回答對你有幫助

另外,虛機團上產品**,超級便宜

23樓:科技程式迷

除了型別不同外,他們佔用的記憶體大小也不同(long和int佔用4個位元組,char佔用1位元組)

24樓:匿名使用者

char 是定義字元型變數(字母,符號);

int 和 long 是定義整型變數(整數),但是long的範圍比int的範圍大。

25樓:

char,int,long都是資料型別,char表示字元,int表示整型,long表示長整型。

給變數指定了資料型別後,變數所給的值或賦予的值只能是相應的型別。否則程式會出錯。

26樓:匿名使用者

char 只佔有一個位元組。char範圍是-128------127

int 咱們的機器是4個位元組 感覺long int(簡寫為long)為長整型,和int一樣啊。

都佔有4個位元組。

27樓:匿名使用者

char、復int、long是c語言中的三個

制基本資料型別,bai這三個的共同點都是du

儲存的整數,用補碼儲存數zhi據。dao

主要區別是三個變數在不同機器上佔的儲存空間不同,進而導致表示的資料範圍和用法不同:

char 在所有機器上都是佔一個位元組,有符號數範圍是-128到127,一般用來表示字元。字元在儲存中就是儲存的ascii值。

int 在16位機上佔2位元組,現在基本沒有了。 在32|64位機上佔四位元組,有符號數範圍是-2^31到2^31-1。

long 在32位編譯系統下佔4位元組,與int相同。在64位系統下佔8位元組,可表示的資料範圍是-2^63到2^63-1

c語言 在c語言中要輸出超出 long int 範圍的整數怎

用陣列 int a 1000 在面對大整數的運算時是用過陣列來儲存輸出的。每一個陣列元素裝一位數。int i 0,a 100 假設是100位的數char c while c getchar n i 輸入回車後 a i 不再輸入 但 i 的值比陣列實際裝的資料長度長1 如牛似乎虎 你可以把數放到字串裡...

c語言,簡單的double和int的問題,求救啊

滄海雄風 把if後面的 去掉 看好 你三個if判斷後面都有 否則就與後面的 構成了一個空的 if x 20 等價於i if x 20 有問題請追問 滿意記得采納 你的if語句後面根本就什麼也沒做,因為 使得if語句提前結束了,改為這樣就對了 include int main if x 20 x 10...

C語言,int與double的問題,求助

這個解釋起來還真是麻煩。需要你瞭解計算機中浮點數的表示方式。由於計算機以2進位制儲存資料,所以小數用2進位制儲存的時候,就變得非常麻煩。我們知道 1 2 0.5 1 4 0.25 1 8 0.125 1 16 0.0625 1 32 0.03125 1 64 0.015625 以小數點為分界線,從左...