0

重複の可能性:
printf の結果を別の printf に渡すのはなぜですか?

私はコードスニペットを持っています..

printf("%d", printf("tim"));

関数 printf は値 tim3 を出力します。2 番目の printf ステートメントには指定子がないのに、文字列 "tim" と共に文字数が出力されるのはなぜですか?

このコードのみを実行すると..printf("tim");出力が得られます.tim Exited: ExitFailure 3なぜこれが起こるのですか?

そして、最初の printf ステートメントはprintf("tim")、整数を期待しているときに引数としてどのように取りますか?

4

2 に答える 2

6

printfは印刷された文字数を返しprintf("tim")、文字列に 3 文字あるため 3 を返します。

2 番目printfは、その値をフォーマット文字列で使用する前に評価する必要があるため、最初に出力されます。

output に関してtim Exited: ExitFailure 3は、印刷と同時に問題を引き起こしている別の問題があるようです。これらの行をコメントアウトすると、他の場所で問題が見つかる可能性があります。

于 2012-10-03T08:44:03.383 に答える
4

printf書式指定子が指定されていない場合は、文字列をそのまま出力します。ということでそのままprintf("Hello");印刷Hello

次のようなフォーマット指定子を使用して同じことを行うこともできます-printf("%s", "Hello");

printf印刷された文字数も返します。したがってprintf("Hello");、最初に文字列Helloを出力してから返します5

あなたのステートメントでは、printf使用の return ステートメントを印刷していますprintf("%d", ...);

実際には、あなたが与えたステートメントは次のように書くことができます -

int i = printf("tim");
printf("%d", i);

失敗に関してはreturn printf("tim");、あなたのmain機能に a があると思います。

于 2012-10-03T08:59:24.633 に答える