【visual studio 2022版】
【即bool类型不赋初值】
#include <iostream>
using namespace std;
int main()
{
bool x;
cout << "请您手动输入bool的值为:" << endl;
cin >> x;
cout << "结果为:" << x << endl;
return 0;
}
====================
【即bool赋初值】
#include <iostream>
using namespace std;
int main()
{
bool x=false;
cout << "请您手动输入bool的值为:" << endl;
cin >> x;
cout << "结果为:" <<boolalpha<< x << endl;
return 0;
}
==========================
【visual studio 2015版】
【即bool类型不赋初值】
#include <iostream>
using namespace std;
int main()
{
bool x;
cout << "请您手动输入bool的值为:" << endl;
cin >> x;
cout << "结果为:" << x << endl;
return 0;
}
====================
【当bool赋初值的时候(会变false)】
#include <iostream>
using namespace std;
int main()
{
bool x=false;
cout << "请您手动输入bool的值为:" << endl;
cin >> x;
cout << "结果为:" <<boolalpha<< x << endl;
return 0;
}
为什么会变成这样?
因为当bool类型变量通过cin赋值时,如果输入”非0非1“,变量值不改变。也就是bool类型变量通过cin进行赋值只能键入0或者1,其他无效。
怎么更改呢?
一般通过设置中间量判断,再对bool变量进行间接赋值。无论对x有没有定义,通过int类型变量a来强制赋值bool类型变量x,有效解决上边出现的问题。
====================
【强制赋值】
#include <iostream>
using namespace std;
int main()
{
bool x=false;
cout << "请您手动输入bool的值为:" << endl;
int a;
cin >> a;
x = a;
cout << "结果为:" <<boolalpha<< x << endl;
return 0;
}