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。 printf 打印 int 时的返回值是多少?

可能重复: 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);

打印七个字符x = 10\n,并返回接收到的 7 y

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

记住\n(新行)是单字符,空格是单字符。

于 2013-07-05T14:23:27.770 回答
1

字符串的长度:

"x = 10\n"

(不包括双引号)为 7 个字符。这就是存储在y中的内容。空格和 '\n' 也各只有 1 个字符。

于 2013-07-05T14:15:57.240 回答
-1

"x = %d\n" 当然有 7 个字符。注意有2个“空格”,1个“%”和1个“d”,记住“\n”是一个整体。你可以试试其他句子。诸如z = printf("x = %d,asd\n",x);或某事。像那样。答案是 11。我认为这样的问题可以通过多行代码来完成。

于 2013-07-05T14:27:49.433 回答