c语言
#include<stdio.h>void main()
{
char a;
a=129;
printf("%d",a);
}
结果是-127,为什么不是129,char不是8位可以存储129吗 char 定义字符变量。怎么能输出整数呢?
楼主。
signed char 8位存储范围为 -128 ~ 127
范围计算过程为补码形式,最高位为符号位。
1 1111111 : 2^7 =128最高符号位为1 所以最小为-128 ,0 1111111:2^7 = 128-1 = 127 最高符号位为0所以最大为127。 本帖最后由 jackz007 于 2019-10-13 19:28 编辑
char 的数值范围是 -128 ~ 127,对应十六进制 0x00 ~ 0xff,其中,0x00 ~ 0x7f 对应于十进制 0 ~ 127,0x80 ~ 0xff 对应于十进制 -128 ~ -1,楼主赋值的整型数 129 表达成 char 就是 0x81,而 char 类型的 0x81 就是 -127,除非楼主用 unsigned char a 来定义变量 a。因为 unsigned char 可表达数值的范围是 0 ~ 255,涵盖了数值 129。
#include <stdio.h>
main()
{
unsigned char a = 129 ;
printf("%d\n" , a) ;
} 5281 发表于 2019-10-13 19:05
char 定义字符变量。怎么能输出整数呢?
%d会输出该字符对应的编码
具体可以看看ASCII表 5281 发表于 2019-10-13 19:05
char 定义字符变量。怎么能输出整数呢?
不好意思 看错了。。
页:
[1]