为什么学习这本书很多东西并不像看起来那样简单比如:
算法性能分析结果$\neq$实际程序性能(底层实现问题)
计算机系统中的算术$\neq$数学中的算术(溢出问题)
我们知道,在纸面上看$$ (x+1)^2≥0$$
是一定的,但是在计算机中就不一定了,比方说:
$ lldb(lldb) print (233333 + 1) * (233333 + 1)(int) $0 = -1389819292
这就是整数的溢出,当然用浮点数的表示方法可以避免溢出,但是浮点数有精度问题
# dawang at wdxtub.local in ~ [9:05:02]$ lldb(lldb) print (1e20 + -1e20) + 3.14(double) $0 = 3.1400000000000001(lldb) print 1e20 + (-1e20 + 3.14)(double) $1 = 0
你了解内存吗?我们都学过的C或者C++都没有提供任何内存保护机制,再加上强大且危险的指针,出现溢出或者段错误实在是家常便饭。这类问题的问题在于,很难确定是程序本身的问题,还是编 ...