【问题标题】:Undesired Output - Printing out Two Numbers不需要的输出 - 打印出两个数字
【发布时间】:2015-02-20 06:08:45
【问题描述】:

我对 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;
}

【问题讨论】:

  • scanf("%i", x); 更改为scanf("%i", &amp;x);。对第二次扫描执行相同操作。
  • c scanf question 的可能重复项

标签: c io stdin


【解决方案1】:

这是因为您忘记了 scanf 语句中的 &amp;。所以改成这样:

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

【讨论】:

  • 添加&amp; 会做什么?
  • @Delfini 让你实际扫描到变量的地址
  • 啊,我明白了。因此,拥有x 只是意味着它将我输入的任何数字添加到已经在x 的数据中?
  • @Delfini 这样您就可以存储输入的数量,您必须将变量的地址提供给 scanf
【解决方案2】:

像这样更改代码。

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

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

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

【讨论】:

    【解决方案3】:

    您忘记了 scanf 语句中的“&”:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      相关资源
      最近更新 更多