Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 签署和未签署的don';行不通_C_Unsigned_Signed - Fatal编程技术网

C 签署和未签署的don';行不通

C 签署和未签署的don';行不通,c,unsigned,signed,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; } 所以我不明白为什么有符号的和无符号的不起作用,我应该得到一个错误吗?您必须使用正确的格式说明符,才能使用函数printf得到正确的结果。写 printf("%d\n", a); pr

我尝试了以下方法:

#include <stdio.h>

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

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

  return 0;
}

所以我不明白为什么
有符号的
无符号的
不起作用,我应该得到一个错误吗?

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

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

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

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

  printf("%d\n", a);
  printf("%u\n", b);
该函数仅根据格式说明符解释数据的内部表示。

使用无符号整数的格式说明符,即
%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;
    }
#包括
内部主(空){
有符号整数a=5;
无符号整数b=-5;
printf(“%d\n”,a);
printf(“%u\n”,b);
返回0;
}
使用未签名整数的格式指定符,即
%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;
    }
#包括
内部主(空){
有符号整数a=5;
无符号整数b=-5;
printf(“%d\n”,a);
printf(“%u\n”,b);
返回0;
}

printf
中将它们视为有符号整数,如果要打印无符号整数,则需要编写
printf(“%u\n”,b)
printf
中将它们视为有符号整数,如果要打印无符号整数,则需要编写
printf(“%u\n”,b)