如何解释这个C程序的输出?

时间:2014-08-17 09:37:53

标签: c

main() {
  printf("AAA"+2);
  printf ("%c","A"+printf(" B")+printf ("C "));
}

任何人都可以告诉我它的输出是什么以及它是如何产生的?

1 个答案:

答案 0 :(得分:6)

第1行

 printf("AAA"+2);

" AAA"是一个包含四个字符的数组(3 A和null)。因此将从索引2开始打印数组。即" A"

第2行:

 printf ("%c","A"+printf(" B")+printf ("C "));

将其划分

 printf(" B")

将打印" B"并返回2(根据手册页)

 printf("C ")

将打印" C"并返回2

所以字符串" A"是一个包含2个字符的数组(A和null)。

但得到了(" A" + 2)+ 2)并且2超出了字符串的范围。

所以这个位未定义