【问题标题】:Problem with my homework: boolean expression我的作业有问题:布尔表达式
【发布时间】:2019-09-13 22:35:03
【问题描述】:

我是编程新手,我需要一些帮助来用布尔表达式解决这个问题:

检查变量p的值是否在-100到100的范围内 (包括限制),但不在 -10 到 10 的范围内

这是我所做的:

int main (){
int p = 10;
bool comparacion =  ((p >= -100) && (p <= 100)) && ((p !>= -10) && (p !<= 10))
cout<< comparacion;

结果应该是 0,因为 p 在 -10 到 10 的范围内,但我得到这个编译错误:

[Error] expected ')' before '!' token

【问题讨论】:

  • 这并没有解决问题,但您不需要逻辑表达式中的任何括号。阅读运算符优先级。
  • 声明的末尾应该有分号
  • 题外话:检查一个区间内的值,我认为if(lower &lt;= value &amp;&amp; value &lt;= upper) 更容易阅读,它更接近我们在数学中写的 lower ...
  • @PeteBecker 实际上,要解决给定的任务(仅使用 &&),我们需要 一个 对括号,因为我们需要否定其中一个 &&。 ..
  • @Aconcagua — 我没有看到只使用 &amp;&amp; 的要求。

标签: c++ boolean expression


【解决方案1】:

!&gt;=!&lt;= 不是有效的运算符。 &gt;=的逆是&lt;&lt;=的逆是&gt;

bool comparacion =  ((p >= -100) && (p <= 100)) && ((p < -10) && (p > 10))

【讨论】:

  • @Aconcagua 解决了帖子里的问题;帮他做作业不是我的工作!
  • 修复运算符,但不是表达式本身,因为一个值不能同时是 和 > 10(矛盾)...
  • [@#$+%*!],编辑我的评论为时已晚......不显示最终解决方案很好,但我会考虑至少提到到目前为止固定的表达式仍然比让用户盲目陷入下一个陷阱更好。
【解决方案2】:

换个角度看会简单很多:

 bool comparacion = p >= -100 && p < -10 || p > 10 && p <= 100;

【讨论】:

    【解决方案3】:

    正确的做法:

    bool comparacion =  ((p >= -100) && (p <= 100)) && (!((p >= -10) && (p <= 10)))
    cout<< comparacion;
    

    【讨论】:

    • 对吗?相对...从技术上讲,是的,但是(多余!)括号的 flood 使表达式难以阅读...
    猜你喜欢
    • 1970-01-01
    • 2010-09-21
    • 2020-10-03
    • 2010-09-24
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多