为什么以下程序的输出是d?
另外,请解释+printf语句中的用法.
?#?include?"stdio.h"
int main(){
int a=1;
printf("%d"+a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是字符串文字"%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)