解析这条程序运行结果

来源:百度知道 编辑:UC知道 时间:2024/05/28 17:29:02
main ()
{
char c;
unsigned char d;
c='\376';
d='\376';
printf(”%d,%d\n”,c,d);
}

运行结果是:-2,254

为什么会这个结果呢 望懂的朋友解答一下迷团

C语言转义符后面跟三个数字,是三位八进制数字。把八进制的376换成十进制,为3*8*8+7*8+6=254。把十进制的254放于char类型中(范围为-128到128),则为-2;放于unsigned char类型里,则为254。这是由于char共八个字节,其中第一位表示正负号;而unsigned char第一位不表示正负号。所以造成此差异。