我不太了解以下函数的输出

I am not quite understanding the output of the following function

我用 C 写了一个简单的 sum() 函数,有两个整数类型的参数。但是,在调用 main 中的函数时,我传递了 char 类型的变量。问题是我无法理解程序的输出。以下是代码。:

void sum(int x,int y)
{
    printf(" x=%d  y=%d\n",x,y);
    printf("%d",x+y);
}

void main()
{
    char a,b,add;
    printf("Enter two values: ");
    scanf("%c%c",&a,&b);
    sum(a,b);           //calling
} 

如果我输入 a=A 和 b=A 那么它应该给我添加 A 的 ASCII 值,即 130,但它给了我 97。 当我尝试打印 x 和 y 的值时,它打印出 x=65 y=32。我不明白为什么它在 y 中存储 32?有人可以解释一下吗。

这是因为您的输入是 A A,即 A<spacebar>Ascanf("%c%c",&a,&b) 正好读取了两个字符,A<spacebar>,结果是 x = 65(A), y= 32(<spacebar>)。如果你想得到预期的输出,你的输入应该是 AA.

您输入的内容似乎是 A A 而不是 AA。对于前者,x 存储 65 而 y 存储 32 因为 space 的 ASCII 值是 32.

如果你想将 124abc 存储在一个整数变量中,那么它将只存储 124。 并且在字符的定义中constant/variable它可以保存所有的ASCII 255字符,其中还包括space(spacebar),tab(tab键),newline(回车键)。 所以当你 运行 代码和屏幕显示“输入两个值:”。您键入 'A',它存储在变量 'a' 中。现在你按下 space 栏,它也是一个字符常量,其 ASCII 32 值存储到变量 'b' 中。为了避免这种情况,您应该在 %c 之前放置一个 space,这样它就不会读取回车键或 space 栏。 或者使用 fflush(stdin) 函数。