因为在三元操作符中,a+b,自动转化成unsigned int 类型,负数20的补码是一个很大的数,加上6以后也不会溢出,所以两者相加是一个很大的数,所以C是1,但是%d是带符号的输出。无符号的输出是%u。
因为a是个unsigned ,所以a+b的结果也是个unsigneda+b的结果并不是-14而是4294967282(32位情况下), 显示-14是因为你用%d输出a+b了,正确的输出格式是%u