当前位置: 首页 > 知识库问答 >
问题:

printf在C中的返回值?

阴永福
2023-03-14

我的代码:

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()函数的返回值

共有3个答案

景正文
2023-03-14

字符串的长度:

"x = 10\n"

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

卢元龙
2023-03-14

读取:int printf(常量字符*格式,…);

成功时,返回写入的字符总数。

对于代码首次打印F中的x=10

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

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

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

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

胥承
2023-03-14

正如您所说,“printf在打印字符串时返回字符数”。

"x=10\n"有7个字符。(即:'x',' ','=',' ','1','0','\n')。

因此,y被设置为7。

 类似资料:
  • -2147483648是32位整数类型的最小整数,但它似乎会在

  • 问题内容: 我正在阅读有效的Java,它在各处都用于换行符。我已经相当成功地在Java程序中使用了换行符。 哪个是“正确”的?这有什么错?Java为什么要更改此C约定? 问题答案: 从快速的Google: 还有一个说明符与参数不对应。输出行的是“%n”。在某些情况下,也可以使用“ \ n”,但是由于“%n”总是输出正确的平台特定的行分隔符,因此它可以跨平台移植,而“ \ n”则不能。

  • 出于某种原因,在下面的递归函数中, 永远不递增p,也就是说字符串s永远不是一个回文,尽管在我的程序中,s确实是一个回文,次数相当少。但是在下面一行中它仍然返回false 是因为功能吗?s采用的一些值为:aaa、aba、AAAA、abbb、bab 我已确保s中没有前后空格 P、 S:我已经检查过了,x==n 示例输入: 输出0。回文:aaaaaa、abaaba、aaaaaa

  • Java1.8正在接收类,它允许我们显式地说明一个方法何时可能返回空值,并在使用它之前“强制”它的使用者验证它是否为空()。 我看到C#有,它执行类似的操作,但使用的是基本类型。它似乎用于DB查询,以区分值是否存在且为0,以及值是否不存在且为NULL。 但似乎C#的对对象不起作用,只对基本类型起作用,而Java的只对对象起作用,对基本类型不起作用。 在C#中是否有一个可为空的/可选的类,迫使我们在

  • 我试图检查unordered_set的insert()函数的返回值,但遇到以下错误: 错误-->请求将“std::pair ,bool>”转换为非标量类型“std::unordered_set::iterator{又名std::__detail::_node_iterator }”

  • 我在玩C语言中的函数指针只是为了学习。我尝试调用一个空函数,并将其结果设置为int。 我从中得到的结果是: 在对它进行了一点研究之后,我意识到main正在函数()中打印printf语句中的字符数。为什么会这样?这是预期产出吗?