不太明白为啥a会有编译错误

img

a 编译器认为不是所有情况都会有返回值,虽然逻辑上看来已经覆盖了所有情况,但是编译器看来缺少了一个else,就不算覆盖所有情况。


但是在高级一些的IDE中,一般会辅助提示你,这里改用else,因为 最后一个 if中已经是 else 中的所有情况,如图:

  1. 编译器的硬性提示报错,缺少返回可能

    img

  2. IDE的辅助软提示,这里可以去掉这个 if

    img

意思就是
如果 n>0 返回1
0==0 返回0
n < 0 返回 -1
正常思维我们思考就是包含全部范围了 但是编译器不会
它会觉得还有别的情况 但是那种情况下又没有返回值 违背了方法定义

认为没有返回值

敢问少侠这是何书?
在下认为老老实实编程就好,遇见此书,实感意外。