#include <stdio.h>
char getchar(int x,int y)
{
char c;
unsigned int a = x;
( a + y )> 10 ? (c = 1 ): (c = 2 );
return c;
}
int main()
{
char c1 = getchar(7,4);
char c2 = getchar(7,3);
char c3 = getchar(7,-7);
char c4 = getchar(7,-8);
printf("c1= %d\n",c1);
printf("c2= %d\n",c2);
printf("c3= %d\n",c3);
printf("c4= %d\n",c4);
return 0;
}
这边c1,c2的值为正常计算的值。
c3:传入参数7,-7 。
我们知道-7的二进制数是7的二进制数取反加1
设7的二进制数为 0000 0000 0000 0111
取反 1111 1111 1111 1000
+1 1111 1111 1111 1001
得到了 -7 的二进制数为 1111 1111 1111 1001
7 的二进制数为 0000 0000 0000 0111
相加 正好溢出范围 值刚好为0,所以c3返回值<10 return c3=2
c4:传入参数7,-8
-8同理转换成一个很大的数,加上7变成一个很大的整数,因此返回值>10 return c4=1