在程序中,你通常如何读取逻辑表达式?例如: (1 == x) && ( 2 > x++)? (x=1) 你的目的是什么 ? 怎样才能为这个表达式找到正确的答案呢?
(1 == x) && ( 2 > x++)? (x=1)
?
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 markif (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;}
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; }
if ((1 == x) && (2 > x++)){
x = 1;
/*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
oknwwptz2#
这个语句甚至不编译, ? 用于 : 作为三元运算符。之后 (x=1) 您应该有else分支,只是一个示例: (1 == x) && ( 2 > x++) ? (x=1) : (x = 2) 此布尔表达式的求值方式如下所示,假设x为1: (1 == x) =正确 (2 > x++) =错误 true && false =错误无论x的值是多少,表达式都将始终为false
:
(x=1)
(1 == x) && ( 2 > x++) ? (x=1) : (x = 2)
(1 == x)
(2 > x++)
true && false
whlutmcx3#
除了有关?:的相关注解(其中需要冒号)外,还需要以下内容来“理解”示例中代码的操作:&&的求值顺序意味着´ ( 2>x++)´ 除非´(1==x)´ 这是真的。尤其意味着x++的副作用不会发生。´x=1´ 是一个赋值,乍一看它不像是一个计算值的表达式,但在java中赋值本身就是一个表达式,它接受被赋值的值。
fwzugrvs4#
(1 == x) && ( 2 > x++)? (x=1);``` `?` 表示三值运算,如果左边 `?` 如果是真的,那么它紧跟在右边。在你的情况下如果 `( 2 > x++)` 为真则值为 `x` 将是1。而是走向 `( 2 > x++)` 你左边的表达必须是真的意思是 `x==1` ,所以如果 `(1 == x)` 是真的,所以 `( 2 > x++)` 是真的,那么你的整体状况是真的。
(1 == x) && ( 2 > x++)? (x=1);
``` `?` 表示三值运算,如果左边 `?` 如果是真的,那么它紧跟在右边。
在你的情况下如果 `( 2 > x++)` 为真则值为 `x` 将是1。而是走向 `( 2 > x++)` 你左边的表达必须是真的意思是 `x==1` ,所以如果 `(1 == x)` 是真的,所以 `( 2 > x++)` 是真的,那么你的整体状况是真的。
4条答案
按热度按时间vojdkbi01#
以下声明:
是一种使用三元运算符的特殊条件语句(
?:
)根据布尔表达式为变量赋值。这是一种更简洁的表达条件语句的方式:
所以根据你的例子(语法错误的btw),那会是这样的:
也就是说:
oknwwptz2#
这个语句甚至不编译,
?
用于:
作为三元运算符。之后
(x=1)
您应该有else分支,只是一个示例:(1 == x) && ( 2 > x++) ? (x=1) : (x = 2)
此布尔表达式的求值方式如下所示,假设x为1:(1 == x)
=正确(2 > x++)
=错误true && false
=错误无论x的值是多少,表达式都将始终为false
whlutmcx3#
除了有关?:的相关注解(其中需要冒号)外,还需要以下内容来“理解”示例中代码的操作:
&&的求值顺序意味着´ ( 2>x++)´ 除非´(1==x)´ 这是真的。尤其意味着x++的副作用不会发生。
´x=1´ 是一个赋值,乍一看它不像是一个计算值的表达式,但在java中赋值本身就是一个表达式,它接受被赋值的值。
fwzugrvs4#