&&/||是短路运算符,我是知道这个概念的,知道前面的不满足就不会判断后面。但是知道是一回事了解又是另一回事。
if(arr[i-1][j]==1&&i>0)//怎么看我写的逻辑都没问题
i>0是防止越界的条件,arr[i-1][j]==1是检索的条件。
可是编译器却不断报错,找了好久都找不到原因。
最后逐步调试的时候发现到这里计算机会先执行第一个条件,发现越界后报错。并不是我过去想的那样,第一个越界情况下整体看完后再给个返回值。当顺序改动后该问题消失。
希望以后自己能更多的用计算机的思维去思考问题。