2016-09-23 122 views
-3

我无法理解下面的语句写在C:任何人都可以解释以下语句的输出吗?

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

有效期是用C写这样的声明?

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

I love c programming202 

任何人都可以解释这句话的输出?

+3

看起来对我有效。代码有什么问题? – EOF

+0

@ EOF,我不明白上面给出的语句会显示什么输出? – sagg1295

+6

是的,它是有效的。至于它的功能,阅读关于'printf'的文档,特别是它的返回值。 –

回答

1

是的。 printf是返回整数值(打印字符数,最后包括\ n)的函数。

4

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

您的输出是"I love c programming202"。所以我们来分析一下:

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

,上面的语句的输出是:我爱c编程202.可以请你解释我的输出? – sagg1295

+1

@ sagg1295已添加。将输出添加到您的问题中,而不是隐藏在某个评论中。 – Downvoter

1

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 
相关问题