0

私のコード:

int main() {
  int x = 10, y;
  y = printf("x = %d\n", x);
  printf("y = %d\n", y);
  return 0;
}

出力:

x = 10
y = 7

文字列を出力するときにprintfが文字数を返すことは知っています。しかし、なぜ 10 を印刷するときに 7 を返すのですか? int を印刷するときの printf の戻り値は何ですか?

重複の可能性: C の printf() 関数の戻り値

4

4 に答える 4

5

あなたが言ったように、「文字列を印刷すると、printfは文字数を返します」。

" x = 10\n" は 7 文字です。(つまり、これら: 'x',' ','=',' ','1','0','\n')。

したがって、y は 7 に設定されます。

于 2013-07-05T14:15:02.273 に答える
3

読み取り: int printf ( const char * format, ... );

成功すると、書き込まれた文字の総数が返されます。

x = 10コードの最初のprintfの場合:

printf("x = %d\n", x);

は 7 文字x = 10\nを出力し、 で受け取った 7 を返しyます。

    x = 10\n
    1234567 
     ^ ^  ^- new line char \n
     | |--spaces   

(改行\n) は 1 文字、スペースは 1 文字です。

于 2013-07-05T14:23:27.770 に答える
1

文字列の長さ:

"x = 10\n"

(二重引用符を含まない) は 7 文字です。それがyに格納されているものです。空白と「\n」もそれぞれ 1 文字です。

于 2013-07-05T14:15:57.240 に答える