“当表达式中存在有符号类型和无符号类型时,默认情况下计算的结果将转化为无符号类型”

而对于计算机过程而言,变量本身转化为有符号还是无符号数,都不会改变在计算机中存储的位状态。也就是说有符号和无符号数在计算机中都是以补码形式存在。

举例:

#include<stdio.h>voidfoo(void){unsignedinta=6;intb=-20;printf("a+b=%x\t",a+b);(a+b>6)?puts(">6"):puts("<=6");}intmain(intargc,char*argv[]){foo();inta=-1;printf("\n无符号状态:%u\t有符号状态:%d\t十六进制状态:%x",a,a,a);return0;}