c語言intlong
① c語言中int,long的取值范圍是多少為什麼是這么多(32位機)
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語言中int,long的取值范圍是多少
主要看編譯器怎麼對這些類型的數據怎麼處理了,不同的編譯器可能會給int分配不同的空間,一般在32位系統中會給int分配4個位元組,以前的單片機編譯器一般會分配1個位元組,現在64位的編譯器一般會分配8個位元組,不同的位元組,他們能表示的取值范圍也就不一樣了。
同樣,有符號數和無符號數,表示的數據范圍也不一樣。比如單片機中的編譯器C51,分配一個位元組:
無符號數,最大也就是0XFF,即十進制的255。
有符號數,正數0~127,負數-128到-1
其它依次類推
long同樣類似
③ C語言 關於int和long類型的范圍
編譯器不同,寬度是不相同,分別如下:
16位編譯器:
int: 2個位元組
long: 4個位元組
long long: 8個位元組
unsigned long: 4個位元組
32位編譯器:
int: 2個位元組
long: 4個位元組
long long: 8個位元組
unsigned long: 4個位元組
64位編譯器:
int: 4個位元組
long: 8個位元組
long long: 8個位元組
unsigned long: 8個位元組
具體范圍,請看下圖:
④ C語言中long int的輸入、輸出格式分別是什麼
c語言中有一個和long long類型想同的類型是int64,他使用的格式是%I64d,如果是long long 那麼格式是%lld。
⑤ c語言中int和long有什麼區別嗎
在32位機器上,二者相同。
在16位的平台上:int是2位元組,long是四位元組。
⑥ C語言中int short long 的具體區別是什麼
三種類型,在類型定義、佔用位元組數、數據范圍等方面存在不同點。
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;
(6)c語言intlong擴展閱讀
1、具體佔用幾個位元組C語言並沒有規定,C語言做了寬泛的限制:
1)、short int類型至少佔用2個位元組。
2)、int類型建議為一個機器字長。32位環境下機器字長為4位元組,64位環境下機器字長為8位元組。
3)、short類型的長度不能大於 int,long類型的長度不能小於 int。
參考資料
網路-C語言
⑦ C語言變數定義char、int、long有什麼區別
1、char 在所有機器上都是佔一個位元組,有符號數范圍是-128到127,一般用來表示字元。字元在存儲中就是存儲的ascii值。
2、int 在16位機上佔2位元組,現在基本沒有了。 在32|64位機上佔四位元組,有符號數范圍是-2^31到2^31-1。
3、long 在32位編譯系統下佔4位元組,與int相同。在64位系統下佔8位元組,可表示的數據范圍是-2^63到2^63-1。
拓展資料:
C語言
是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
語言標准
起初,C語言沒有官方標准。1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。布萊恩·柯林漢(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本書,名叫《The C Programming Language》。這本書被 C語言開發者們稱為K&R,很多年來被當作 C語言的非正式的標准說明。人們稱這個版本的 C語言為K&R C。
特點
1、C語言是一個有結構化程序設計、具有變數作用域(variable scope)以及遞歸功能的過程式語言。
2、C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
3、不同的變數類型可以用結構體(struct)組合在一起。
4、只有32個保留字(reserved keywords),使變數、函數命名有更多彈性。
5、部份的變數類型可以轉換,例如整型和字元型變數。
6、通過指針(pointer),C語言可以容易的對存儲器進行低級控制。
7、預編譯處理(preprocessor)讓C語言的編譯更具有彈性。