条件句中== true的意义是什么?

时间:2013-12-08 13:17:49

标签: java c++ conditional

我正在学习C ++和java,我已经注意到如果你有条件,如果条件为真,即使你没有明确地写== true

考虑以下非常简单的C ++代码:

bool c_plus_plus_is_cool(){
    return true;
}

int main(){
    if (c_plus_plus_is_cool()) {
        cout << "C++ is cool!";
    } 
    return 0;
}

问:

之间有什么区别

if (c_plus_plus_is_cool())if (c_plus_plus_is_cool() == true)

在其他语言中也是这种情况(比如Java(我一直在写==true ......))?

7 个答案:

答案 0 :(得分:5)

==运算符返回一个布尔值 如果你已经有一个布尔值,== true将与原始布尔值没有区别;写作没有意义。

同样,请使用!运算符代替== false

一个例外是C#可空的布尔值,== true的{​​{1}}将为false。

答案 1 :(得分:2)

C ++和Java在这一点上都有相同的行为,而== true只是两种语言中的冗余噪声。

如果到目前为止使用Java中的详细语法,那么这是您自己的私有样式。即使在Java中,这也不是常用和接受/推荐的风格。

答案 2 :(得分:1)

除了== true带来的语法臃肿之外,实际上没有区别。

答案 3 :(得分:1)

在C / C ++和几乎所有语言中, if while 封装代码块,只有在条件时才会执行真正。明确地将 == true 放入条件语句中是多余的,但有些程序员更喜欢它;它基本上是一种风格选择,不会影响程序的行为或速度。

答案 4 :(得分:1)

它们都是一样的。该语言实现如下条件:

  

遇到if语句时,请检查条件是否为真。   现在,当我们这样说时,它显然允许你做==,这是   编译器/解释器将通过说,数据类型或值来处理它   等于?如果是,则继续进行。

参考flowchart

这段代码:

bool c_plus_plus_is_cool(){
    return true;
}

int main(){
    if (c_plus_plus_is_cool()) {
        cout << "C++ is cool!";
    } 
    return 0;
}

与:

相同
int main(){
    if (c_plus_plus_is_cool() == true) {
        cout << "C++ is cool!";
    } 
    return 0;
}

答案 5 :(得分:1)

== true位于ifwhile(或类似for或三元运算符之类的内容)时没有区别,特别是如果左侧值已经是bool类型bool 1}},在你的情况下是。

如果您需要将值显式转换为bool(expr),则纯显式转换(==)看起来要好得多。

唯一的情况是,当奇怪的比较是合理的时,bool左边的值属于一个具有比较运算符的类,{{1}}作为第二个参数(尽管这通常意味着不好)设计:))。但情况并非如此,因此,在我看来,这样的编码约定绝对没用,而且相当丑陋。

答案 6 :(得分:0)

第二个是坏习惯,会在其他情况下给出错误的答案:

int f() {
    return 3;
}

if (f() == true)
    std::cout << "Won't get here\n";
if (f())
    std::cout << "Will get here\n";