#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,怎么可能给c赋值100(ASCII代码是'd')?

最佳答案

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

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

10-05 20:39