java—读取和解释程序中的逻辑表达式

vd2z7a6w  于 2021-07-12  发布在  Java
关注(0)|答案(4)|浏览(308)

在程序中,你通常如何读取逻辑表达式?例如: (1 == x) && ( 2 > x++)? (x=1) 你的目的是什么 ? 怎样才能为这个表达式找到正确的答案呢?

vojdkbi0

vojdkbi01#

以下声明:

var value = (boolean expression) ? some value if `true` : some value if `false`

是一种使用三元运算符的特殊条件语句( ?: )根据布尔表达式为变量赋值。
这是一种更简洁的表达条件语句的方式:

var value;

//this is the boolean expression you evaluate before the question mark
if (boolean expression is true) {
    //this is what you assign after the question mark
    value = some value if true;
}
else {
    //this is what you assign after the colon
    value = some other value if false;
}

所以根据你的例子(语法错误的btw),那会是这样的:

if ((1 == x) && (2 > x++)){
    x = 1;
}
else {
    /*This is the value that would be put after the colon
     *(which is missing in your example, and would cause a compiler error)
     */
    x = some other value; 
}

也就是说:

x = (1 == x) && (2 > x++) ? 1 : some other value
oknwwptz

oknwwptz2#

这个语句甚至不编译, ? 用于 : 作为三元运算符。
之后 (x=1) 您应该有else分支,只是一个示例: (1 == x) && ( 2 > x++) ? (x=1) : (x = 2) 此布尔表达式的求值方式如下所示,假设x为1: (1 == x) =正确 (2 > x++) =错误 true && false =错误
无论x的值是多少,表达式都将始终为false

whlutmcx

whlutmcx3#

除了有关?:的相关注解(其中需要冒号)外,还需要以下内容来“理解”示例中代码的操作:
&&的求值顺序意味着´ ( 2>x++)´ 除非´(1==x)´ 这是真的。尤其意味着x++的副作用不会发生。
´x=1´ 是一个赋值,乍一看它不像是一个计算值的表达式,但在java中赋值本身就是一个表达式,它接受被赋值的值。

fwzugrvs

fwzugrvs4#

(1 == x) && ( 2 > x++)? (x=1);
``` `?` 表示三值运算,如果左边 `?` 如果是真的,那么它紧跟在右边。
在你的情况下如果 `( 2 > x++)` 为真则值为 `x` 将是1。而是走向 `( 2 > x++)` 你左边的表达必须是真的意思是 `x==1` ,所以如果 `(1 == x)` 是真的,所以 `( 2 > x++)` 是真的,那么你的整体状况是真的。

相关问题