用于从函数返回字符串文字的程序的输出

时间:2013-08-29 12:52:52

标签: c string pointers literals

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

输出:“electronicsia”

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

2 个答案:

答案 0 :(得分:4)

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

因此内部printf输出“electronics”,之后外部printf输出“ia”。

答案 1 :(得分:0)

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

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

假设:printf(“%s”,arg);你的arg = printf(“电子学”)+ fun()

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