從我所知道的整數範圍是32,768到32,767。 長整數的範圍是2,147,483,648到2,147,483,647。 我doubledchecked wikipedeia來確保。C:爲什麼整數作爲長整數?
的現在問題:
int a=2147483647;
printf("a: %d\n", a);
爲什麼這項工作?如果我將1加到2147483647那麼它會打印垃圾,如果變量是一個長整數,則會出現一些垃圾。但爲什麼它允許我首先將一個長整數分配給一個整數?
從我所知道的整數範圍是32,768到32,767。 長整數的範圍是2,147,483,648到2,147,483,647。 我doubledchecked wikipedeia來確保。C:爲什麼整數作爲長整數?
的現在問題:
int a=2147483647;
printf("a: %d\n", a);
爲什麼這項工作?如果我將1加到2147483647那麼它會打印垃圾,如果變量是一個長整數,則會出現一些垃圾。但爲什麼它允許我首先將一個長整數分配給一個整數?
從我所知道的整數範圍是32,768到32,767。
這是不正確的。 int
的範圍至少爲-32,767至32,767;它可能有更大的範圍,並且在大多數32位和64位平臺上都有。
您可以通過檢查<limits.h>
定義的INT_MAX
和INT_MIN
宏找出int
型平臺上的範圍。
+1,儘管實際上它的範圍至少爲+/- 32767,不一定包括-32768,以允許其他有符號表示愚蠢。 –
2011-03-11 00:33:16
@Steve:是的;我只是看着那個,因爲我認爲它必須支持有限的幅度,-32,768到32,767不會。謝謝。 – 2011-03-11 00:34:40
int
的實際寬度通常取決於實現。您可以使用limits.h
標題中的INT_MAX/INT_MIN
常量來找出實際範圍。
在x86機器上,int
通常是4個字節,所以2^31-1的確是它的最大值。
「對於x> = 3的值,在x86機器上,int是......」。對於'286,'186和'086,「int」通常是2個字節。但是,除非OP有超過20年的計算機,否則您的陳述是正確的。 – 2011-03-11 03:27:23
你知道什麼是錯的。
與Java等一些其他語言不同,C中的int
和long
的確切大小是實現定義的(具有設置的限制)。顯然,你使用的平臺是32位寬,但在其他平臺上它可能是16位,並且在某些平臺上,它是64位寬。
同樣,在一些平臺上,long
是32位寬;在別人身上它是64位寬。如果一個平臺選擇這樣做,它可能會更廣泛。
的sizeof(短)< =的sizeof(int)的< =的sizeof(長)
你檢查哪個維基百科條目? 32位機器上的整數應該落在-2b到+ 2b的範圍內。 – 2011-03-11 00:32:54
http://en.wikipedia.org/wiki/Integer_%28computer_science%29雖然我可能讀錯了。我有這樣的想法,有什麼大小的int,long int,float應該是一個標準。但是,這並不意味着一個程序在不同的處理器上可能會有很大的不同。有人會如何照顧這個程序員? – Pithikos 2011-03-11 01:03:51