curRow += goingDown ? 1 : -1;
1、这里面用到了两个运算符:①“+=” ②" ? :"
2、“+=” 举个例子 int a; a += b 等价于 a = a + b;这里的 b 可以是变量也可以是表达式
3、“? :” 举个例子 int c; c = m > n ? m : n
等价于
if(m > n)
c = m;
else
c = n;
同样的这里的m和n可以是变量也可以是表达式
4、关于运算符优先级问题,“?:”在优先级表中处于13级, “+=”在优先级表中处于14级,所以“?:”优先于“+=”进行计算
5、现在来拆分你不理解的地方curRow += goingDown ? 1 : -1;
①“?:”优先,所以先看表达式 goingDown ? 1: -1;
等价于if(goingDown)
1
else
0
可以看出当goingDown为0时,表达式goingDown ?1:-1的值为-1, goingDown为非0时表达式goingDown ?1:-1的值为1
②假设表达式goingDown ?1:-1的值为-1,那么curRow += goingDown ? 1 : -1;可以等价于curRow += -1;
再等价于cuRow = cuRow + (-1);