在Windows操作系统中,c++程序在比较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中,当程序到达该部分时,它只是崩溃,我不知道为什么
这是一个off-by- 1错误,因为你的数组大小为5,而循环运行6次,导致写入数组边界导致未定义的行为。所以应该是i<5
而不是i<6
还可以通过操作循环索引i
来避免退出循环,而可以使用break
。