【问题标题】:C++ code printing strange values [duplicate]C ++代码打印奇怪的值[重复]
【发布时间】:2015-01-11 15:45:18
【问题描述】:

我遇到了一个非常愚蠢但奇怪的问题。当我试图编译和运行以下代码时,我的编译器正在打印“ggl”,但我认为它不应该。奇怪的是,在做了这么多编程之后,我被困在这里。究竟是什么问题?有人可以帮我吗?提前致谢!!

#include <iostream>
using namespace std;

int main() {
    int t=8;
    if(1<t<5){
        cout<<"ggl";
    }
    //cout<<aa;
    return 0;
}

【问题讨论】:

    标签: c++


    【解决方案1】:

    这条线并不像你想象的那样

     if(1<t<5)
    

    你不得不说

     if (1 < t && t < 5)
    

    第一个版本说

    if ((1 < t) < 5)
    

    计算结果为

    if (true < 5)
    if (1 < 5)
    

    这总是正确的。

    【讨论】:

    • 我们似乎在同时输入相同的内容。无论如何我都会为你 +1。
    • 感谢 Cyber​​ 的快速响应!这是 (1
    • @varunkr 一般来说,由于我所描述的原因,大多数语言都有你刚刚看到的行为。想到的一个例外是Python,它允许使用您最初编写的语法。
    【解决方案2】:

    您的if 条件实际上表示if ((1 &lt; t) &lt; 5),这始终是正确的,因为(1 &lt; t) 是1 或0(1 &lt; 8 的计算结果为1)。

    由于链式比较(通常)在 C++ 中不起作用,因此您需要以不同的方式检查条件:

    if (1 < t && t < 5) {
        cout << "ggl";
    }
    

    【讨论】:

      【解决方案3】:

      这个

      if(1<t<5)
      

      不做你认为它做的事。它不能确定t是否在1到5之间。你想要

      if ((1<t) && (t<5))
      

      它实际上是取值(1&lt;t)(如果1&lt;t 为1,否则为0),然后查看该值是否小于5,它总是如此。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-29
        • 2017-08-25
        • 2021-02-06
        • 2014-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-29
        相关资源
        最近更新 更多