如何在C++中修复int-to-bool警告?

3 c++ integer boolean

当我尝试从文件中读取一个整数并使bool变量等于它时,我在MSVC++中收到警告.

accessLV[i] = FileRead(file1, i + 1);
Run Code Online (Sandbox Code Playgroud)

(accessLV是一个bool数组,FileRead是我为减少从文件读取所涉及的语法而做的一个函数,我是因为该语句在for循环中)

我尝试过使用static_cast:

accessLV[i] = static_cast<bool>(FileRead(file1, i + 1));
Run Code Online (Sandbox Code Playgroud)

但我仍然得到警告.我试过这样做(我不确定确切的术语):

accessLV[i] = (bool)FileRead(file1, i + 1));
Run Code Online (Sandbox Code Playgroud)

警告仍在那里.反正有没有使accessVV成为一个整数的数组摆脱警告?

注意:这是FileRead的语法,如果它有帮助:

int FileRead(std::fstream& file, int pos)
{
    int data;
    file.seekg(file.beg + pos * sizeof(int));
    file.read(reinterpret_cast<char*>(&data), sizeof(data));
    return data;
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*ave 8

怎么样

accessLV[i] = FileRead(file1, i + 1) != 0;
Run Code Online (Sandbox Code Playgroud)

  • 额外的一组()不会误入歧途只是为了显示优先级在哪里! (2认同)