#include<stdio.h>
int main()
{
int a=5;
printf("%d \n"+1,a); // output : d
printf("%%d \n"+1,a); // output : 5
printf("%q \n"+1,a); // output : q
printf("%%q \n"+1,a); // output : q
printf("%k \n"+1,a); // output : k
printf("%%k \n"+1,a); // output : k
printf("ABCD \n"); // output : ABCD
printf("ABCD \n" +1); // output : BCD
printf("ABCD \n" +3); // output : D
}
Run Code Online (Sandbox Code Playgroud)
我无法理解上述程序给出的输出.我是新手.如果我必须知道指针中的高级主题?
"%d \n"+1返回指向包含空格的指针"d \n".同样,"%%d \n"+1 返回指向的指针"%d \n".
因此,声明
printf("%%d \n"+1,a); // output : 5
Run Code Online (Sandbox Code Playgroud)
相当于
printf("%d \n", a);
Run Code Online (Sandbox Code Playgroud)
这就是它输出5的原因.
至于"%%q \n"+1哪个是等价的%q \n,%q不是预定义的格式说明符,并且行为是未定义的(参见C1X第315页).
其他陈述的答案是相似的.