关于C语言字符变量char的问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 22:26:30
#include <stdio.h>

void main()

{
char A = -100;

printf("\nThe A is %u.",A);
}

字符变量char的取值范围不应该是-128 到127么 为什么我定义char A = -100 最后输出的结果是63436呢?知道的麻烦指定一下

%u格式输出,A被转换为unsigned int型,然后再输出....

用的是TC2 ?

有符号的负数,转化成unsigned型,就会变成比较大的正数。看你的输出,应该是16位的环境,用的TC2。0?
给个过程你:-100D = 10011100B(用补码可算)
10011100B只有8位,扩展成16位成1111111110011100B,再用%U输出,是无符号,直接把1111111110011100B转换成十进制(无符号数不需要用补码算),就是65436了

正确应该是这样的
void main()

{
char A = “-100”;

printf("\nThe A is %u.",A);
}