我无法理解下面的语句写在C:任何人都可以解释以下语句的输出吗?
printf("%d", printf("%d", printf("%s", "I love c programming")));
有效期是用C写这样的声明?
当我运行它,我得到的输出:
I love c programming202
任何人都可以解释这句话的输出?
我无法理解下面的语句写在C:任何人都可以解释以下语句的输出吗?
printf("%d", printf("%d", printf("%s", "I love c programming")));
有效期是用C写这样的声明?
当我运行它,我得到的输出:
I love c programming202
任何人都可以解释这句话的输出?
是的。 printf
是返回整数值(打印字符数,最后包括\ n)的函数。
printf
返回指示错误或包含写入字符数的int
。所以,因为%d
是int
的格式字符串,所以此嵌套是完全有效的。
您的输出是"I love c programming202"
。所以我们来分析一下:
printf
打印"I love c programming"
。这是20个字符,其中printf
返回。printf
打印20
,因为这是以前的printf
的返回值。printf
打印2
,因为20
有2个字符。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
看起来对我有效。代码有什么问题? – EOF
@ EOF,我不明白上面给出的语句会显示什么输出? – sagg1295
是的,它是有效的。至于它的功能,阅读关于'printf'的文档,特别是它的返回值。 –