Board logo

标题: 2.6 上机实践问题 [打印本页]

作者: moorwindmill    时间: 2010-6-4 19:41     标题: 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?
作者: fwbook    时间: 2010-6-5 09:04

一般不直接使用cin给布尔类型进行赋值。至少我见到的大部分程序都是这样。

这个问题,我再确认一下。
作者: moorwindmill    时间: 2010-6-7 16:31

2# fwbook


好的,谢谢。
作者: moorwindmill    时间: 2010-6-8 00:03

2# fwbook


应该如何改进呢?想实现重新处理是输入的数据。
作者: fwbook    时间: 2010-6-8 09:16

你可以设置一个中间变量。

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

这样就避免从键盘上给布尔a、b赋值了。
作者: moorwindmill    时间: 2010-6-15 17:29

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;
}
作者: fwbook    时间: 2010-6-19 10:39

6# moorwindmill


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




欢迎光临 万卷图书 (http://wanjuanchina.net/) Powered by Discuz! 7.0.0