2013-02-16 66 views
-2

標準整數在c99標準中採用的最小值並不是它在MSVC 2008中真正需要的值。例如,SCHAR_MIN在c99中爲-127,在msvc 2008.中爲-128。請您向我解釋..?標準整數最小值

+2

Dup的:http://stackoverflow.com/questions/8010040/why-is-schar-min-defined-as-127-in-c99 – ckhan 2013-02-16 05:32:04

+0

你爲什麼擔心?如果你正在達到極限,那麼我建議你重新評估你的算法。極端是錯誤發生的地方,你會以燒焦的手指結束。 – 2013-02-16 05:36:21

+2

你瞭解2的補碼和1的補碼之間的區別嗎? – Mike 2013-02-16 05:41:58

回答

1

表示佔1補碼的C99標準。 (請注意,在5.2.4.2列爲註釋// 2 -1)1的補值從-127到+127:

00000000 : +0 
00000001 : +1 
... 
01111110 : +126 
01111111 : +127 
10000000 : -127 
10000001 : -126 
... 
11111110 : -1 
11111111 : -0 

的MSVC2008是上市2的補(該值這是2 )。在2的補值去從-128到+127:

00000000 : 0 
00000001 : +1 
... 
01111110 : +126 
01111111 : +127 
10000000 : -128 
10000001 : -127 
... 
11111110 : -2 
11111111 : -1 
0

看看2的補碼。現有答案。