私のコードは
#include<stdio.h>
#include<conio.h>
main()
{
int p;
scanf("%d",p);
printf(p*10);
}
しかし、それはゴミの価値を与えています、なぜですか?
私のコードは
#include<stdio.h>
#include<conio.h>
main()
{
int p;
scanf("%d",p);
printf(p*10);
}
しかし、それはゴミの価値を与えています、なぜですか?
&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);
}
scanf("%d",p);
printf(p*10);
これが実際に機能するとは驚きです!! 特にprintf
コマンド。
Format Specifiers
C で aboutおよびprintf
Andコマンドを読む必要がありscanf
ます。:)
とで使用reference operator(&)
します。scanf
format specifier
printf
入力された値は の に保存されないため、演算子をgarbage
使用しない場合は常に値を取得します。保存場所がわからない..'&'
scanf
memory location
variable
値をスキャンしますが、変数に格納されません。ガベージ値を取得する理由は、local
変数を使用していて、そのメモリの場所がSTACK
.
この初期化されていない変数の値を出力するだけです。
scanf は、ポインタが答えを書き込むことを期待しています。メモリアドレスのように見える整数を提供します。たとえば -Wall でコンパイルしてみてください