-3
char* fun()
{
  return("samsung india");
}
main()
{
  printf("%s",printf("electronics")+fun());
}

输出:“电子学”

有人可以解释一下这个输出吗?

4

2 回答 2

4

printf("electronics")将输出发送到 stdout 并返回打印的字符数,即 11,并且由于fun()返回一个字符指针,因此在外部 printf 将其发送到 stdout 之前,您将向该指针添加 11。

所以内部 printf 输出“电子”,然后外部 printf 输出“ia”。

于 2013-08-29T13:03:33.273 回答
0

我会说每个运行时的输出可能不同..因为那里发生了什么:

printf("%s",printf("electronics")+fun());

假设: printf("%s", arg); 你的 arg = printf("electronics")+fun()

arg 是 char* 所以指针......实际上当你的 arg 被评估时, printf("electronics") 提供输出电子和返回值 11(成功打印的字符数),你的 fun() 返回 char * - 指向 samsung india 的内存指针,但您添加到该指针 11,因此您的指针将指向“ia”,这将添加到输出...

于 2013-08-29T13:04:52.827 回答