我不太了解以下函数的输出
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>A
。 scanf("%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) 函数。
我用 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>A
。 scanf("%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) 函数。