【问题标题】:Signed and unsigned don't work签名和未签名都不起作用
【发布时间】:2014-10-18 14:57:47
【问题描述】:

我尝试了以下方法:

#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 不起作用,我应该得到错误吗?

【问题讨论】:

  • 您在printf 中将它们视为有符号整数,如果您想打印无符号整数,您需要编写printf("%u\n", b);

标签: c unsigned signed


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    使用 unsigned int 的格式说明符,即%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;
        }
    

    【讨论】:

      猜你喜欢
      • 2019-06-21
      • 1970-01-01
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      相关资源
      最近更新 更多