注册 登录
编程论坛 C++教室

这又是什么问题啊,怎么就不安全了啊

nmwnwnu 发布于 2014-05-14 12:02, 845 次点击
if(a>=b>=c)
        max=a;
        min=c;
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    else if(a>=c>=b)
        max=a;
        min=b;
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
D:\c语言文件\CEXAM3_2P64.CPP(9) : warning C4804: '>=' : unsafe use of type 'bool' in operation
D:\c语言文件\CEXAM3_2P64.CPP(13) : error C2181: illegal else without matching if
12 回复
#2
TonyDeng2014-05-14 13:01
寫出這樣的代碼,你的C學得很好咯,用邏輯型數據與其他數據類型比較。
#3
TonyDeng2014-05-14 13:07
另外,你寫這個if()表達式,想表達什麽邏輯?
#4
nmwnwnu2014-05-14 13:25
回复 3 楼 TonyDeng
那个我是想表达将abc三个数比较然后最大的赋值给max,最小的赋值给min,可是就是出现了错误
#5
nmwnwnu2014-05-14 13:26
回复 2 楼 TonyDeng
什么意思,逻辑型数据可以和浮点型数据比较?
#6
nmwnwnu2014-05-14 13:28
就这个样子,可是错误主要是上面那个
#include <iostream>
using namespace std;
int main ()
{
    double a,b,c;
    double max,min;
    cout<<"请任意输入3个实数,我可以求出最大值和最小值。";
    cin>>a>>b>>c;
    if(a>=b>=c)
        max=a;
        min=c;
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    else if(a>=c>=b)
        max=a;
        min=b;
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    else if(b>=c>=a)
        max=b;
        min=a;
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    else if(b>=a=c)
        max=b;
        min=c;
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    else if(c>=a>=b)
        max=c;
        min=b;
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    else
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    return 0;

}
#7
nmwnwnu2014-05-14 13:28
就这个样子,可是错误主要是上面那个
#include <iostream>
using namespace std;
int main ()
{
    double a,b,c;
    double max,min;
    cout<<"请任意输入3个实数,我可以求出最大值和最小值。";
    cin>>a>>b>>c;
    if(a>=b>=c)
        max=a;
        min=c;
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    else if(a>=c>=b)
        max=a;
        min=b;
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    else if(b>=c>=a)
        max=b;
        min=a;
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    else if(b>=a=c)
        max=b;
        min=c;
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    else if(c>=a>=b)
        max=c;
        min=b;
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    else
        cout<<"您输入的三个实数中,最大的是:"<< max <<'\n'<<"最小的是:"<< min <<"\n";
    return 0;

}
#8
TonyDeng2014-05-14 13:36
你寫的是程序,不是數學。想表達a、b、c中的最大者,應是if((a >= b) && (b >= c)),不是你寫的那個。中間兩個括號中括著的都是邏輯結果,也衹有邏輯數據才能用邏輯運算符。C++不是C,它有內置的邏輯數據類型bool,所有諸如a>=b這樣的表達式,其運算結果是bool型的,不是數値型的,用bool型與其他數據類型做邏輯運算,編譯器就提示你不要這樣做,雖然可以強行這樣做,但並不建議,所以提示信息說是不安全的用法。你寫的那個,並不知道編譯器是先求a>=b還是b>=c,總之求出一個之後,就得到一個bool型數據,要與另一個非bool數據做比較運算,編譯器不知道會怎麽做。

那個提示信息說的是:在>=這裡,是不安全地使用bool數據類型的操作。

[ 本帖最后由 TonyDeng 于 2014-5-14 13:40 编辑 ]
#9
funyh2502014-05-14 15:02
#10
zklhp2014-05-14 16:10
建议楼主认真看书
#11
蜀之山2014-05-14 17:25
LZ与我同是初学的节奏啊
#12
peach54602014-05-14 17:41
没看出来这段代码和安全有什么关系?
#13
yangfrancis2014-05-22 11:28
if块和else块的语句都有点多,建议楼主用花括号分别括起来吧。除了逻辑条件的问题楼上已指出了之外,其他貌似没有什么问题,不过使用max和min好像已没有意义了,直接在输出流中输出a,b,c不是很明白吗?
1