在Windows操作系统中,c++程序在比较char和数组时关闭

c++ program shuts down in windows comparing a char to an array

本文关键字:数组 char 程序 操作系统 Windows c++ 比较      更新时间:2023-10-16

我在程序中有这个部分

    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