C, - . ( ++ std::numeric_limits, .)
(myuint)(-1). , (& sect; 6.3.1.3/1-2):
& hellip; , , , .
, -1 , , , . ( , " " .)
, , , [ . ], :
(mysint)( (myuint)(-1) / (myuint)2 )
, , , , ( 2--), (1-- /).
, , . , . , , , , . [: , .]
, (, ), 2'- , min, max:
myuint max_myuint = (myuint)(-1);
mysint max_mysint = (mysint)(max_myuint / (my_uint)2);
mysint min_mysint = (-max_mysint) - (mysint)1;
, undefined, . , 6.3.1.3/3, :
; .
, , . , , , gcc. gcc, "C-, " :
, 2s- , , , , uintmax_t:
uintmax_t umax = (uintmax_t)(-1);
while ( (mysint)(umax) < 0 ) umax >>= 1;
mysint max_mysint = (mysint)(umax);
mysint min_mysint = (-max_mysint) - (mysint)1;