次のコード行があります。
int i =125;
char s[]="hello";
char c='z';
printf("%f",i);
printf("%f",c);
printf("%f",s);
出力 -936283178250000000000.000000 -936283178250000000000.000000 -936283178250000000000.000000 これはどういう意味ですか??
次のコード行があります。
int i =125;
char s[]="hello";
char c='z';
printf("%f",i);
printf("%f",c);
printf("%f",s);
出力 -936283178250000000000.000000 -936283178250000000000.000000 -936283178250000000000.000000 これはどういう意味ですか??
これは、不適切なフォーマット ディレクティブを使用していることを意味します。代わりにこれを試してください:
printf("%d", i);
printf("%c", c);
i
または、2 つの値を inとfloatにキャストしますc
(ただし、特に の場合はあまり意味がありませんc
)。適切な書式設定ディレクティブを使用することをお勧めします。
間違った指定子を使用すると、動作はundefinedになります。これは、観察しているものです。
どこから%fを入手しましたか?間違えない限り、%fは浮動小数点数のC++パラメーターです。
使用することにより:
int i =125;
char s[]="hello";
char c='z';
printf("%f",i);
printf("%f",c);
printf("%f",s);
印刷するものはすべて浮動小数点数(別名10進数)であるとコンパイラーに伝えていますが、実際には浮動小数点数である必要があります。
printf("%d",i);
printf("%c",c);
printf("%s",s);
printf で間違った書式指定子を使用すると、未定義の動作が発生します。未定義の動作と言うと、出力が得られますが、出力は C 実装ごとに異なる場合があります。通常、これは警告になります。GCC コンパイラはこれに対して警告を発行します。