【问题标题】:Unsigned char is printing -ve answer when printed in binary [closed]以二进制形式打印时,无符号字符正在打印 -ve 答案[关闭]
【发布时间】:2016-03-19 16:55:54
【问题描述】:

目标是打印 -ve 或 +ve 整数的二进制输出,当我们声明带符号的变量时输出是正确的,但无法理解变量声明为无符号时的行为。

  int main() {
      unsigned char num = -1; /* unsigned int */
      int i = 0;
      /* Loop to print binary values */
      for (i = 0 ; i < 8; i++) {
        if(num & 128u)
        {
         printf("1 ");
        }
        else 
        {
         printf("0 ");
        }
        num= num<<1;
      }
      printf("\n");
      return 0;
    }

输出打印为“1 1 1 1 1 1 1 1”

等于-1;但我已将unsigned int 作为输入。这是如何工作的?

【问题讨论】:

  • 你能在你的问题中解释你期望输出是什么,为什么?
  • 你没有unsigned int,你有unsigned char

标签: c


【解决方案1】:

当你做的时候

unsigned char num = -1; /* unsigned int */

num 中存储的十进制数为 255(最大数)。所以在每个循环中if(num &amp; 128u) 都是令人满意的,所以 o/p 是 ....

/* 输出打印为“1 1 1 1 1 1 1 1” */

您所说的 abot int 存在更多错误,但在程序中您已使用 char 变量并将 signed 数字存储在 unsigned 变量中,因此,您不会得到预期的 o/p .

【讨论】:

猜你喜欢
  • 2019-08-12
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多