签名和未签名不合作

时间:2014-10-18 14:57:48

标签: c unsigned signed

我尝试了以下内容:

#include <stdio.h>

int main(void) {
  signed int a = 5;
  unsigned int b = -5;

  printf("%d\n", a);
  printf("%d\n", b);

  return 0;
}

我得到了:

5
-5

所以我不明白为什么signedunsigned不起作用,如果我收到错误?

2 个答案:

答案 0 :(得分:3)

您必须使用正确的格式说明符才能使用printf函数获得正确的结果。写

  printf("%d\n", a);
  printf("%u\n", b);

该函数只是根据格式说明符解释数据的内部表示。

答案 1 :(得分:1)

使用 unsigned int 的格式spcifier,%u

现在编译并运行代码,您将看到差异

 #include <stdio.h>

    int main(void) {
      signed int a = 5;
      unsigned int b = -5;

      printf("%d\n", a);
      printf("%u\n", b);

      return 0;
    }