【问题标题】:My C program's output is not the expected one我的 C 程序的输出不是预期的
【发布时间】:2016-05-21 07:34:18
【问题描述】:
#include<stdio.h>
#include<conio.h>
int main()
{
   char c, p;
   p=getchar();
   int n=p+259;
   c=n;
   putchar(c);
   return 0;
}

如果我输入'a'字符,谁能告诉我为什么这个程序的输出是'd'字符?

如果 p='a',则 n=97+259=356。 如果我的 n 变量是 356,如何将值 100('d' 的 ASCII 码)赋给 c?

【问题讨论】:

  • 检查您的类型。 char 达到 255 后将翻转为 0。
  • @RPGillespie 如果char 被签名会怎样?

标签: c output character variable-assignment


【解决方案1】:

char 可以取 0 到 255 之间的值,因为它是 8 位的。

97 + 259 = 356 和 356 模 256 为 100。

【讨论】:

  • 好的。我知道了。非常感谢!
【解决方案2】:

char 是 8 位数据类型,您大大超出了它的最大表示:

a -> ascii 97
97 + 259 -> 356
356 & 0xFF -> 100 - overflowed, strip off "high bit" which can't be stored.
100 -> ascii 'd'

【讨论】:

  • 非常感谢您的详细解释!我认为 356 & 0xFF -> 100。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多