次のコードはどのように機能しますか?
void main()
{
printf("%d", printf("earth"));
}
これにより、出力として次のようになりますearth5
。
の戻り値printf
は、印刷される文字数です。インナーprintf
が最初に呼び出されます。に相当:
int rc = printf("earth");
printf("%d", rc);
これは絶対に問題ありません:-)
print( "earth")はearthを出力し、5(印刷された文字数)を返します。
もう1つのprintfは、パラメーターとして5を取得し、それを整数として出力します(%dのため)
%d
整数がそれを出力することを期待しています。printf
印刷された文字数を返し、5文字の文字列を印刷しています。
最初に内側の印刷を評価して印刷された文字数を調べ、次に外側の印刷を評価します5。