水深 发表于 2019-9-21 13:25:05

S1E7课后题问题

#include <stdio.h>

int main()
{
      signed char i;
      unsigned char j;

      i = 255;
      j = 255;

      printf("signed char %hhd\n", i);
      printf("unsigned char %hhu\n", j);

      return 0;
}
为什么第一个输出-1?

jackz007 发表于 2019-9-21 14:24:11

本帖最后由 jackz007 于 2019-9-21 14:27 编辑

      没错,255 显示成 signed char 就是 -1,只有显示成 unsigned char 才会是 255。这就是 signed char 和 unsigned char 的区别。
      signed char 能表达的正整数的范围是 1~127,负整数的范围是 -1 ~ -128,加上 0,一共可以表达 256 个不同的整数。
      signed char和 unsigned char 在 0 ~127 范围内,数值是完全相同的,超出后,unsigned char 的 128 对应于 signed char 的 -128,255 对应于 -1。
页: [1]
查看完整版本: S1E7课后题问题