入门cpp,在写该代码时出现如下情况,为什么直接输出却得到以下结果,是什么问题,望解答,感谢
#include
using namespace std;
int main(){
char b[3];
for (int i=0;i<sizeof(b);++i){
b[i]=char(97+i);
cout << b[i];
}
cout <sizeof(b)<

sizeof()是根据字符串末尾的 “\0”来判断数组的大小的,你的 char b只能储存三个元素,存满之后没有位置放 "\0" ,sizeof就不能正确判断数组b的大小。数组越界是很危险的
可以这样改
#include <iostream>
using namespace std;
int main(){
char b[4];
for (int i=0;i<sizeof(b)-1;++i){
b[i]=char(97+i);
cout << b[i];
}
cout <<endl;
cout <<sizeof(b)<<endl;
cout << b;
}
编译器问题,可能与默认对齐数有关吧,不用太在意。我这边出来正常