为什么以下程序的输出是d
?
另外,请解释在printf语句中使用+
。
#include"stdio.h"
int main(){
int a=1;
printf("%d"+a);
return 0;
}
答案 0 :(得分:5)
问题是像"%d"
这样的字符串文字实际上是一个数组(在这种情况下转换为指针)。
当您执行"%d"+a
时,您并未将a
附加到字符串文字中,而是取出指向此字符串的指针,并将a
添加到它,并打印结果。
由于a
为1,您将在"%d"
开头后打印一个字符,即"d"
您的代码等同于以下内容:
#include"stdio.h"
int main(){
const char* str = "%d";
printf(str+1);
return 0;
}
答案 1 :(得分:1)
输出
d
因为您将a
添加到格式的指针中。格式现在看起来"d"
。 a
不被视为printf
参数。
答案 2 :(得分:-2)
printf()将格式字符串作为第一个参数,然后使用变量将格式化变量替换为。您尝试使用+
进行字符串连接,例如在Java中。你最有可能做的是:
#include"stdio.h"
int main(){
int a=1;
printf("%d", a);
return 0;
}