2012-03-17 57 views
0

從K & R C書中解決練習時,我偶然發現練習2.1。UINT_MAX與C中的ULONG_MAX相同

起初我作爲UINT_MAX-1,但後來我用了%u佔位符,但現在它給我相同數量ULONG_MAX

在這本書的附錄B,他們說,UINT_MAX應該65535ULONG_MAX4294967295,但在運行時的運動,它的給我兩個UINT_MAXULONG_MAX4294967295

這是爲什麼?

+1

在Mac OS X 64位應用程序中,ULONG_MAX = ULONGLONG_MAX和ULONG_MAX不等於UINT_MAX。具體而言'UINT_MAX = 4294967295','ULONG_MAX = 18446744073709551615'和'ULONG_LONG_MAX = 18446744073709551615' – bobobobo 2013-04-15 02:46:22

回答

5

首先,打印unsigned long的正確方法不是%u而是%lu。其次,的標準的最小值UINT_MAX的值是65535.它可以(通常是)較大。整數類型

它們的實施德音響奈德值

5.2.4.2.1大小應爲等於或大於在 大小(絕對值)來示出的那些,具有相同的符號。

+0

哦,我看到 我沒有看到最小幅度 感謝:D – 2012-03-17 12:23:45

1

在32位平臺上,intlong通常是相同的,所以其最大也是相同的。當然,他們的未簽名同行也是如此。

0

附錄錯了。唯一的保證是sizeof(long)> = sizeof(int)> = sizeof(char)注意到相等的可能性。