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 以小數點為分界線,從左...