2013-02-16 43 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的补码。现有答案。