| (

问题描述 投票:1回答:1
reference

), so the expression is equivalent to:1which is always true when n, even if it's not a multiple of 2019.2019A clearer expression would be:(a, b)

我的任务是找到一个逻辑表达式,其结果是

a>=n || b<=n && (n%3==0 && n%673==0)

若且仅若 n%2019==0 的倍数 && 而不是来自于区间 ||.

b<=n && (n%3==0 && n%673==0)

教材给出的答案如下,我不太明白。n<=a我理解的是,在这两个旁观者之间的东西就相当于

(a>=n || b<=n) && (n%3==0 && n%673==0)

所以,这是好的。但我不明白为什么会这样,我的意思是... (a, b) 操作者的优先级高于 2019 操作符,那么我们岂不是要评估 &&先,而且只有在最后 ||? 我想,如果我要做的话,我会这样做。

所以我只是增加了一组额外的parantheses. 现在我们要检查这个数字是否不在区间内。
c++ logical-operators pseudocode
1个回答
0
投票

优先于

bool expr(int n, int a, int b)
{
    return a>=n || b<=n && (n%3==0 && n%673==0);
}

expr(1000, 2000, 2018),所以我们多加一组副词?还能用吗?还是我错了?true

我的任务是找到一个逻辑表达式,如果且仅当一个给定的数字n是2019的倍数且不是来自区间(a,b)时,这个表达式将导致1。教材给出的答案如下......。试了一下,发现写的表达式没有多余的括号是不行的。

a>=n || (b<=n && (n%3==0 && n%673==0))

例如,评价为 n <= a,尽管它不是2019年的倍数。

正如你所指出的,逻辑AND运算符&&比逻辑OR运算符具有更高的优先性。

© www.soinside.com 2019 - 2024. All rights reserved.