-8

我的代码是

#include<stdio.h>
#include<conio.h>
main()
{
    int p;
    scanf("%d",p);
    printf(p*10);
}

但是它赋予垃圾价值,为什么?

4

4 回答 4

6

您需要&pscanf通话中使用。您还需要在printf()调用中使用格式字符串。

以下是您的代码存在的主要问题的列表:

  • scanf("%d", p)- 您需要将指针传递给 int,而不是 int。现在,您正在写入未初始化的 int 变量包含的任何地址/值。
  • printf(p*10)- 您需要将格式字符串作为第一个参数传递,并根据格式字符串传递值作为以下参数。在您的情况下,"%d"打印一个整数,然后p(或p*10)作为第二个参数。

这是固定代码:

int main()
{
    int p;
    scanf("%d", &p);
    printf("%d\n", p*10);
}
于 2012-05-11T05:35:31.193 回答
0

您只需打印此未初始化变量的值。

scanf 需要一个指针来写答案。你提供一个看起来像内存地址的整数。例如,尝试使用 -Wall 进行编译

于 2012-05-11T05:37:50.630 回答
0
scanf("%d",p);
printf(p*10);

令我惊讶的是,这确实有效!尤其是printf命令。

您需要阅读C 中的Format SpecifiersprintfAndscanf命令。:)

于 2012-05-11T09:03:53.083 回答
0

使用reference operator(&)inscanfformat specifierin printf

garbage如果您不使用'&'运算符,您总是会得到一个值,scanf因为输入的值不会存储在memory location您的variable. 它不知道在哪里存储..

它会扫描您的值,但不会存储在变量中。获得垃圾值的原因是您正在使用一个local变量并且它的内存位置是STACK.

于 2012-12-24T18:26:02.580 回答