C++ 这两种称呼有什么区别

C++ 这两种称呼有什么区别,c++,c,string,character,C++,C,String,Character,在这里,即使基址相同,那么为什么输出不相同,请在第一个printf语句中描述工作是如何完成的 #include<stdio.h> int main(){ char c[2]="a"; printf("%c\n",c); printf("%c",c[0]); return 0; } #包括 int main(){ 字符c[2]=“a”; printf(“%c\n”,c); printf(“%c”,c[0]); 返回0; } 在第一个printf()语句中,您有未定义的行为。任何事情都

在这里,即使基址相同,那么为什么输出不相同,请在第一个printf语句中描述工作是如何完成的

#include<stdio.h>
int main(){
char c[2]="a";
printf("%c\n",c);
printf("%c",c[0]);
return 0;
}
#包括
int main(){
字符c[2]=“a”;
printf(“%c\n”,c);
printf(“%c”,c[0]);
返回0;
}
在第一个
printf()
语句中,您有未定义的行为。任何事情都有可能发生。在这种情况下,你运气不好,得到了一个你认为可以解释的结果(但实际上你无法解释:它是UB

在第二个
printf()
语句中(忽略UB已发生且整个程序因此无效的事实),将打印数组
c
的第一个元素。

在第一个
printf()
语句中,您有未定义的行为。任何事情都有可能发生。在这种情况下,你运气不好,得到了一个你认为可以解释的结果(但实际上你无法解释:它是UB


在第二个
printf()
语句中(忽略UB已经发生并且整个程序因此无效的事实),将打印数组
c
的第一个元素。

区别在于,这
printf(“%c\n”,c)语句错误。
printf(“%c”,c)
用于打印
char
类型<代码>c
属于
指针
类型
c[0]
是一种
char
类型。区别在于,这
printf(“%c\n”,c)语句错误。
printf(“%c”,c)
用于打印
char
类型<代码>c
属于
指针
类型
c[0]
是一种
char
类型。通过
printf
进行更多解释,由程序员确保参数与说明符匹配。。如果你弄错了,那么就会产生未定义的行为。一些友好的编译器可能会给出警告。谢谢你的时间,但你能给我一个参考,我可以从中更深入地挖掘它。我是一个新手,正在尝试在这里构建我的概念,提前感谢@MattMcNabbMy我通常的参考资料。有些人(包括我)也喜欢的文本。在C标准中,“fprintf函数”一节给出了完整的参考。但是,对于原型(其中
printf
就是其中之一)中有关将参数与函数匹配的内容,您还需要阅读6.5.2.2.#6-7(函数调用)Linux手册页也有一些文档(尽管质量有所不同)解释更多,使用
printf
时,由程序员确保参数与说明符匹配。。如果你弄错了,那么就会产生未定义的行为。一些友好的编译器可能会给出警告。谢谢你的时间,但你能给我一个参考,我可以从中更深入地挖掘它。我是一个新手,正在尝试在这里构建我的概念,提前感谢@MattMcNabbMy我通常的参考资料。有些人(包括我)也喜欢的文本。在C标准中,“fprintf函数”一节给出了完整的参考。但是,关于在原型(其中
printf
就是其中之一)中将参数与函数匹配的内容,您还需要阅读6.5.2.2.#6-7(函数调用)Linux手册页也有一些文档(尽管质量不同)