main() {
printf("AAA"+2);
printf ("%c","A"+printf(" B")+printf ("C "));
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我它的输出是什么以及它是如何产生的?
第1行
printf("AAA"+2);
Run Code Online (Sandbox Code Playgroud)
"AAA"是一个包含四个字符的数组(3 A和null).因此将从索引2开始打印数组.即"A"
第2行:
printf ("%c","A"+printf(" B")+printf ("C "));
Run Code Online (Sandbox Code Playgroud)
把它分开
printf(" B")
Run Code Online (Sandbox Code Playgroud)
将打印"B"并返回2(根据手册页)
该
printf("C ")
Run Code Online (Sandbox Code Playgroud)
将打印"C"并返回2
所以字符串"A"是一个包含2个字符的数组(A和null).
但得到("A"+ 2)+ 2)并且2超出了字符串的范围.
所以这个位是未定义的