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;
}
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#