为什么布尔变量会更改(C ++)?

ter*_*ar9 -2 c++ variables program-entry-point boolean pass-by-reference

有人可以告诉我这是怎么回事吗?

#include <iostream>
using namespace std;
int main() {
    bool x = false;
    if (x = true) { cout << "x is true" << endl; }
    if (x = false) { cout << "x is false" << endl; } 
    // for some reason always prints "x is true".
}
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚为什么我不能使用布尔方法进行按引用调用(是的,我也在擦除该方法后进行了测试),然后我意识到我的主方法中的布尔变量是自己改变的。请帮忙!

Mik*_*zyk 6

您的if语句需要使用double等于==进行比较。您正在分配给您的变量=

哦,x=true分配给x和本身也是true

  • 如果将警告级别设置得足够高,许多编译器会警告您有关此类代码的信息。 (4认同)