返回列表 回复 发帖

2.6 上机实践问题

第二章 数据类型 上机实践 31页的 2

输入如下代码:

#include<iostream.h>
int main(void)
{
        bool b;
        bool a;
        cin>>a;
        cin>>b;
        cout<<"!a="<<!a<<endl;
        cout<<"a&&b : "<<(a&&b)<<endl;
        cout<<"a||b :"<<(a||b)<<endl;
        return 0;
}

但编译出来的时候,却显示如下错误:

error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'bool' (or there is no acceptable conversion)
: error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'bool' (or there is no acceptable conversion)
执行 cl.exe 时出错.


这是为什么呢?bool 型数据不能 接受 键盘输入 到cin?
一般不直接使用cin给布尔类型进行赋值。至少我见到的大部分程序都是这样。

这个问题,我再确认一下。
2# fwbook


好的,谢谢。
2# fwbook


应该如何改进呢?想实现重新处理是输入的数据。
你可以设置一个中间变量。

中间变量获取输入的值。然后判断该值,然后决定赋值给布尔a、b的值。

这样就避免从键盘上给布尔a、b赋值了。
5# fwbook


是哦,谢谢。修改成如下代码,执行成功,希望下一版教材能增加这个思辨问答的过程,让后来者都了解到。


#include "stdafx.h"
#include <iostream.h>

int main(void)
{
        bool a;
        bool b;
        int x;
        int y;
        cin>>x;
        cin>>y;
        a=x;
        b=y;
        cout<<"!a="<<(!a)<<endl;
        cout<<"a&&b="<<(a&&b)<<endl;
        cout<<"a||b="<<(a||b)<<endl;
        return 0;
}
6# moorwindmill


你好。能说一下你说的“思辨问答”是指哪个方面?或者是哪个形式?这样我们好进行相应改进。
返回列表