An *_*eur 1 c printf pointer-arithmetic post-increment
我在理解以下代码片段的输出时遇到了一些麻烦。
#include<stdio.h>
int main()
{
char *str;
str = "%d\n";
str++;
str++;
printf(str-2, 300);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
代码的输出为300。
我知道直到printf语句前的行str指向字符- %。我需要帮助的是理解为什么printf打印300功能。
权之前printf,str是没有指向%,但到\n。
的++操作者递增的值str,以指向所述阵列中的下一个字符。由于执行了两次,因此指向\n。当您传递str-2给时printf,它将创建一个指向的指针%。这样就printf看到"%d\n"导致300按预期方式打印的字符串。