C 有人能解释一下下面语句的输出吗?
我无法理解以下用C写的陈述:C 有人能解释一下下面语句的输出吗?,c,printf,C,Printf,我无法理解以下用C写的陈述: printf("%d", printf("%d", printf("%s", "I love c programming"))); 用C写这样的语句有效吗 当我运行它时,我会得到输出: I love c programming202 有人能解释一下这句话的输出吗?是的printf是一个函数,它返回一个整数值(打印的字符数,包括结尾的\n)printf返回一个指示错误或包含写入字符数的int。因此,因为%d是int的格式字符串,所以这个嵌套是完全有效的 您的输出是
printf("%d", printf("%d", printf("%s", "I love c programming")));
用C写这样的语句有效吗
当我运行它时,我会得到输出:
I love c programming202
有人能解释一下这句话的输出吗?是的
printf
是一个函数,它返回一个整数值(打印的字符数,包括结尾的\n)printf
返回一个指示错误或包含写入字符数的int
。因此,因为%d
是int
的格式字符串,所以这个嵌套是完全有效的
您的输出是“我爱c编程202”
。让我们把它分解一下:
printf
打印“我爱c编程”
。这是20个字符,printf
返回printf
打印20
,因为这是前一个printf
的返回值printf
打印2
,因为20
有2个字符printf返回值:成功返回后,这些函数返回打印的字符数(不包括用于结束字符串输出的空字节)
printf(“%d”,printf(“%d”,printf(“%s”,“我喜欢c编程”));
int ret;
//输出“我爱c编程”=>ret=20
ret=printf(“%s”,“我喜欢c编程”);·
//ret=20=>输出“20”=>ret=2
ret=printf(“%d”,ret);
打印(“%d”,ret);//ret=2=>输出“2”
//=>我喜欢c编程202
对我来说似乎有效。你的代码有什么问题?@EOF,我不明白上面给出的语句将显示什么输出??是的,它是有效的。关于它的功能,请阅读printf
上的文档,尤其是它的返回值。运行它时您得到了什么?你不明白输出的哪一部分?如何改进格式字符串,使其更清晰?输出字符串出现的顺序是什么?上面语句的输出是:I love c programming 202。你能解释一下输出吗???@sagg1295添加了。将输出添加到您的问题中,而不是隐藏在某些注释中。
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