c++ 程序在 windows 中将 char 与数组进行比较时关闭
c++ program shuts down in windows comparing a char to an array
我在节目中有这部分
char size_input[5]={'1','0','4','-'};
for (int i=0;i<6;i++){
cin >> size_input[i];
if(size_input[i]!=char(45)){
valid_size_characters++;
}else{
i=6;
}
}
它在 windows 和 linux 中编译都没有错误,但在 windows 中,当程序到达该部分时它就崩溃了,我不知道为什么
这是一个差一错误,因为您的数组大小为 5,而循环运行 6 次导致写出数组边界,从而导致未定义的行为。所以应该是 i<5
而不是 i<6
.
也可以通过操纵循环索引 i
来避免退出循环,而您可以使用 break
.
我在节目中有这部分
char size_input[5]={'1','0','4','-'};
for (int i=0;i<6;i++){
cin >> size_input[i];
if(size_input[i]!=char(45)){
valid_size_characters++;
}else{
i=6;
}
}
它在 windows 和 linux 中编译都没有错误,但在 windows 中,当程序到达该部分时它就崩溃了,我不知道为什么
这是一个差一错误,因为您的数组大小为 5,而循环运行 6 次导致写出数组边界,从而导致未定义的行为。所以应该是 i<5
而不是 i<6
.
也可以通过操纵循环索引 i
来避免退出循环,而您可以使用 break
.