在c中的格式说明符中使用`+`

Jua*_*ews -2 c printf

为什么以下程序的输出是d

另外,请解释+printf语句中的用法.

?#?include?"stdio.h"
int main(){
    int a=1;
    printf("%d"+a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

tux*_*ux3 5

问题是字符串文字"%d"实际上是一个数组(在这种情况下转换为指针).

当你这样做时"%d"+a,你没有附加a到字符串文字,你拿着指向这个字符串的指针,添加a它,然后打印结果.

a1开始,你将在开始之后打印一个字符"%d",这将是"d"

您的代码等同于以下内容:

#?include?"stdio.h"
int main(){
    const char* str = "%d";
    printf(str+1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)