关于布尔类型输入问题(bool cin C++)

  • C++环境中,bool类型按 ”非零为true,是零为false“ 规则执行。  在VS2015编译环境下,声明一个bool变量,如果没有定义,编译器会报错,声明bool类型时不会有默认值。  
  • 把bool类型变量作为键盘输入变量时(用cin来赋值bool),当声明一个bool类型变量x后,默认该变量x为true,且当输入值为非零时,该变量x一直为true。
  • 而当声明一个bool类型变量y后,如果给它赋值为false,再通过输入方式(cin)赋值为非0非1时,结果却是false?   
下面通过一个例子说明
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;

int main(void)
{
	cout << "输入一个bool值:" << endl;
	bool x;        //声明x
	cin >> x;
	cout << "x为:" << boolalpha << x << endl;
	system("pause");
	return 0;
}

当键盘输入3对 x 赋值时,输出结果为 true 。

如果把声明x变量的语句改为:

bool x = false;        //声明定义为false
当键盘输入3对x赋值时,输出结果为false。

  • 从以上我们可以看出

            当bool类型变量通过cin赋值时,如果输入”非0非1“,变量值不改变。

            也就是bool类型变量通过cin进行赋值只能键入0或者1,其他无效。


而在实际中,我们一般不通过cin对bool变量进行键盘赋值,如果需要这么操作,为了避免出错,一般通过设置中间量判断,再对bool变量进行间接赋值


下面通过例子说明:

#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;

int main(void)
{
	bool x = false;
	int a;
	cout << "输入一个bool值:" << endl;
	cin >> a;
	x = a;
	cout << "x为:" << boolalpha << x << endl;
	system("pause");
	return 0;
}

输入3,运行结果为true。


无论对x有没有定义,通过int类型变量a来强制赋值bool类型变量x,有效解决上边出现的问题。


  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值