C , char ( ), . , , . , ?
, , , , . ? .
char , , - 127, - -128. , : "char = 128", , , i, -128. , , , "char = 129", -127. ? , , (). , "char = -129", 127, "char = -130", 126, .
( ) 127, 126, 125,..., -126, -127, -128 ( )
, , , .

: , int char short, ( , int, short char, ), "short" char , int, int, :
return (sum-x==y) && (sum-y==x);
, , , int, , . , INT_MAX+1, INT_MIN, INT_MIN-1 == INT_MAX, TRUE! , "short" char int, (). , int , , .
char , . , , , , . , C, char "short" int, , int, , .
, MinGW Ubuntu 12.04, , . , , short , int, int. :
return (sum-x==y) && (sum-y==x);
, "sum-x" "y" (int), , ( ):
short sum = x+y;
. 32767 2 , , :
short sum = x+y;
-32767, - . , :
return (sum-x==y) && (sum-y==x);
"sum-x" (-32767 - 32767) y (2) ( ), -, - , "sum-x" -65534, y, .
, :
#include <stdio.h>
short add_ok( short x, short y ){
short sum = x+y;
return (sum-x==y) && (sum-y==x);
}
int main(void) {
short i, ii;
scanf("%hd %hd", &i, &ii);
getchar();
printf("%hd", add_ok(i, ii));
return 0;
}
.
, , , , , , - .
: C99 6.3.1.3 , GNU C .