首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

char类型负数用printf %x 打印的有关问题

2012-10-05 
char类型负数用printf %x 打印的问题#includestdio.h#includestring.h#includestdlib.hint main(int

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应该就可以
 

[解决办法]

探讨

因为计算机里char,short都会在处理时对齐到int,因为char是有符号数,会扩宽填充符号位。

热点排行