char类型负数用printf %x 打印的问题
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
signed char a[1000];
int i;
for(i = 0;i<1000;i++)
{
a[i] = -i-1;
}
for(i = 0;i<255;i++)
printf("a[%d] = %d\n",i,a[i]);
return 0;
}
出来结果是ffffffff-ffffff80,之后从正数开始变成char型的了7f-1
负数部分为什么变成int型了
[解决办法]
因为计算机里char,short都会在处理时对齐到int,因为char是有符号数,会扩宽填充符号位。
[解决办法]
使用%d打印的时候signed char对齐到int型,因为char是有符号数,会扩宽填充符号位,所以就成这样了;如果用%C应该就可以
[解决办法]