使用if语句来满足两个条件

时间:2018-02-20 16:12:42

标签: c++

我正在编写一个简单的射击 - 炮弹游戏'对于我的班级,我必须打印程序" HIT"当它击中目标时。我使用的代码是(h是y轴,d是x轴):

if (h > 100 && 680<d<780)
{
    write_string("HIT");
}

然而它会打印&#34; HIT&#34;即使只满足其中一个条件。我如何做到这一点在这些条件执行操作之前必须满足这些条件?

如果我需要为上下文发布更多代码,我可以。

3 个答案:

答案 0 :(得分:8)

@Configuration
@EnableWebMvc
public class DispatcherContext extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedMethods("GET", "POST", "PUT", "PATCH", "DELETE", "HEAD");
    }
}

一次只能做一个比对比少的比赛。单独进行检查并使用'&amp;&amp;'检查它们是否都是真的操作

答案 1 :(得分:8)

表达式680<d<780不符合您的想法。

首先检查是否680<d,然后评估为truefalse

然后比较这个结果表达式,看它是否小于780,这意味着你可以得到条件true < 780 false < 780(两者都是这是真的,因为true == 1false == 0)。

你可能意味着680<d && d<780,它通过布尔AND条件检查d是否在680到780的范围内。

答案 2 :(得分:1)

这是因为<是一个二元运算符,因此,您的表达式会以您不想要的方式进行评估。

检查运算符优先级表,您的表达式似乎被评估为(h > 100 && (680 < d) < 780),在这种情况下它是真的,与d的值无关(因为(680 < d) = true将导致在1 < 780(680 < d) = false将导致0 < 780)。但h的价值仍应影响。

无论如何,您必须将if条件重写为(h > 100 && 680 < d && d < 780)