unsigned ,int,char 数据相互转换

unsigned如果定义一个负数,存储的是这个负数的补码不看符号位(但要参与计算)对应的整数(假设为a),如果是以%d输出,要将补码转换成原码,任然是这个负数;如果以%u输出,直接输出a;

char a=-10;

其实是将ASSIC码对应的字符赋给a,ASSIC范围-128--127;

以%d输出的话要在a的补码前面补充补码的第一个数字,再转换成原码,还是-10,以%c输出是这个数字在ASSIC表中对应的字符,

以%u输出的话任然是在补码前补充补码第一个数字,但不转换成原码,直接输出该二进制对应的十进制数;

你可能感兴趣的:(c语言)