-8

私のコードは

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

しかし、それはゴミの価値を与えています、なぜですか?

4

4 に答える 4

6

&p通話で使用する必要がありscanfます。また、呼び出しでフォーマット文字列を使用する必要がありprintf()ます。

コードで発生する主な問題のリストを次に示します。

  • scanf("%d", p)- int ではなく int へのポインターを渡す必要があります。現在、初期化されていない int 変数に含まれるアドレス/値に書き込みを行っています。
  • printf(p*10)- 最初の引数としてフォーマット文字列を渡し、次の引数としてフォーマット文字列に従った値を渡す必要があります。あなたの場合、"%d"整数を出力してからp(またはp*10)を2番目の引数として出力します。

固定コードは次のとおりです。

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

これが実際に機能するとは驚きです!! 特にprintfコマンド。

Format SpecifiersC で aboutおよびprintfAndコマンドを読む必要がありscanfます。:)

于 2012-05-11T09:03:53.083 に答える
0

とで使用reference operator(&)します。scanfformat specifierprintf

入力された値は の に保存されないため、演算子をgarbage使用しない場合は常に値を取得します。保存場所がわからない..'&'scanfmemory locationvariable

値をスキャンしますが、変数に格納されません。ガベージ値を取得する理由は、local変数を使用していて、そのメモリの場所がSTACK.

于 2012-12-24T18:26:02.580 に答える
0

この初期化されていない変数の値を出力するだけです。

scanf は、ポインタが答えを書き込むことを期待しています。メモリアドレスのように見える整数を提供します。たとえば -Wall でコンパイルしてみてください

于 2012-05-11T05:37:50.630 に答える