为什么如果条件为false,为什么仍会对语句进行辩护

Why if statement still be excuted when condition is false?

本文关键字:为什么 语句 条件 如果 false      更新时间:2023-10-16

代码如下所示,值 - 行 i显然是-1。但是以下陈述仍然有所共鸣。问题是在放大函数中的第一个。

void enlarge(queue<vector<int>> &slv, vector<int> &v, int n)
{
    auto row = v.size();
    int rec = 0;
    for (int i = 0; i < row; ++i)
    {
        int value = v[i];
        rec |= 1 << value;
        //int s = (value - row);
        if (value - row + i >= 0)   
            rec |= 1 << (value - row + i);
        if (value + row - i < n)    
            rec |= 1 << (value + row - i);
    }
    vector<int> vt;
    int bitPosi = 0;
    while (bitPosi < n)
    {
        if (!(rec & 1))
        {
            v.push_back(bitPosi);
            slv.push(v);
            v.pop_back();
        }
        rec >>= 1;
        bitPosi++;
    }
}

我解决了这个问题。之所以发生,是因为行被声明为自动变量,并将其推断为size_t。转换为int时,行失去了精度。