height[left] < height[right]? left++ : right--;
我想用上面的语法来替换if / else语句。我认为它遵循(条件)? doX():doY()但是有些错误。
谢谢!
答案 0 :(得分:3)
三元运算符是表达式,而不是语句。你没有将表达式的结果赋给任何东西,所以编译器不喜欢它。
如果您将此表示为语句,请使用if
而不是三元运算符:
if (height[left] < height[right]) {
left++;
} else {
right--;
}
答案 1 :(得分:0)
这是错误的,因为操作没有为任何东西赋值......
三元操作有回报
int a=0;
int b=0;
int left=0;
int right=0;
int pos=0;
pos = a < b? left++ : right--;
如您所见,变量pos被指定为三元运算的结果
在你的情况下,你错过了变量被留下++或右 - 将被分配:
??? = height[left] < height[right]? left++ : right--;