我无法理解用C编写的以下陈述:
printf("%d", printf("%d", printf("%s", "I love c programming")));
在C中写这样的语句是否有效?
当我运行它时,我得到输出:
I love c programming202
有人能解释一下这句话的结果吗?
答案 0 :(得分:4)
printf
返回int
,表示错误或包含写入的字符数。因此,因为%d
是int
的格式字符串,所以此嵌套完全有效。
您的输出为"I love c programming202"
。所以让我们打破这个:
printf
打印"I love c programming"
。这是20个字符,printf
返回。printf
打印20
,因为这是前一个printf
的返回值。printf
打印2
,因为20
有2个字符。答案 1 :(得分:1)
是。 printf
是一个函数,它返回一个整数值(打印的字符数,包括最后的\ n)
答案 2 :(得分: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