繁体   English   中英

谁能解释以下语句的输出?

[英]Can anyone explain the output of following statement?

我无法理解用 C 编写的以下语句:

printf("%d", printf("%d", printf("%s", "I love c programming")));

用 C 编写这样的语句是否有效?

当我运行它时,我得到输出:

I love c programming202

谁能解释一下这个语句的输出?

printf返回一个int指示错误或包含写入的字符数。 因此,因为%dint的格式字符串,所以这种嵌套是完全有效的。

你的输出是"I love c programming202" 那么让我们分解一下:

  1. 最里面的printf打印"I love c programming" 这是printf返回的 20 个字符。
  2. 第二个最里面的printf打印20因为这是前一个printf的返回值。
  3. 外部printf打印2因为20有 2 个字符。

是的。 printf是一个返回整数值的函数(打印的字符数,包括末尾的 \\n)

printf 返回值:成功返回后,这些函数返回打印的字符数(不包括用于结束输出到字符串的空字节)。

printf("%d",printf("%d",printf("%s","I love c programming")));

<=>

int ret;                                                                                       
// output "I love c programming" => ret = 20                                                    
ret = printf("%s","I love c programming");·                                                    
// ret = 20 => output "20" => ret = 2                                                          
ret = printf("%d", ret);                                                                       
print("%d", ret); // ret = 2 => output "2"                                                         

// => I love c programming202

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM