-3

次のコード行があります。

int i =125;
char s[]="hello";
char c='z';
printf("%f",i);
printf("%f",c);
printf("%f",s);

出力 -936283178250000000000.000000 -936283178250000000000.000000 -936283178250000000000.000000 これはどういう意味ですか??

4

3 に答える 3

3

これは、不適切なフォーマット ディレクティブを使用していることを意味します。代わりにこれを試してください:

printf("%d", i);
printf("%c", c);

iまたは、2 つの値を inとfloatにキャストしますc(ただし、特に の場合はあまり意味がありませんc)。適切な書式設定ディレクティブを使用することをお勧めします。

間違った指定子を使用すると、動作はundefinedになります。これは、観察しているものです。

于 2012-07-27T13:38:08.690 に答える
0

どこから%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);
于 2012-07-27T16:41:34.310 に答える
0

printf で間違った書式指定子を使用すると、未定義の動作が発生します。未定義の動作と言うと、出力が得られますが、出力は C 実装ごとに異なる場合があります。通常、これは警告になります。GCC コンパイラはこれに対して警告を発行します。

于 2012-07-31T21:52:17.723 に答える