不希望的输出 - 打印出两个数字

时间:2015-02-20 06:08:46

标签: c io stdin

我对C编程很新,所以我想我会尝试编写一个简单的程序 打印两个int个数字。我提示用户输入两个号码,然后使用printf

打印两个号码

但是,在运行程序时,我得到的结果非常奇怪。

例如......

Enter first int: 5
Enter second int: 3
First int: 2130567168
Second int: 2686756

我的代码如下......

#include <stdio.h>

int main()
{
    int x, y;

    printf("Enter first number: ");
    scanf("%i", x);

    printf("Enter second number: ");
    scanf("%i", y);

    printf("%i\n%i%\n",x,y);

    return 0;
}

3 个答案:

答案 0 :(得分:5)

这是因为您忘记了scanf声明中的&。所以改成它:

scanf("%i", &y);
scanf("%i", &x);
          //^ See here

你的printf语句中也有一个%太多了。由于%适用于format specifiers,因此如果您要打印符号%,则必须将其写入2次:

printf("%i\n%i%\n",x,y);
            //^ Is a format specifier so if you want to print the symbol, write it 2 times

旁注:

如果在scanf语句中使用说明符%i并输入如下内容:035,则输出将变为29,因为它将被解释为八进制数。因此,如果您不希望这样,您可以将说明符更改为%d035变为35

答案 1 :(得分:2)

像这样更改代码。

scanf("%i", &y);
scanf("%i", &x);

在将值存储到变量时,您必须提供该变量的地址。如果您使用的是阵列,则无需提供。在printf语句中,使用所需的说明符。

printf("%i\n%i\n",x,y);

答案 2 :(得分:2)

你忘记了&#39;&amp;&#39;在scanf语句中:

scanf("%i", &y);
scanf("%i", &x);
      //^ this
相关问题