#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 ",c1); printf("c1=%d ",c2); printf("c1=%d ",c3); printf("c1=%d ",c4); return 0; }
1 2 2 1
无符号和有符号都会变成无符号的 所以 7+4>10 1 7+3=10 2 -7会变成一个很大的数和7相加刚好溢出为0 所以<10 为2 -8变成一个很大数 和7 相加没有溢出还是一个很大的数 所以>10 为 1