“不应该以聪明才智和逻辑分析能力来评判程序员,而要看其分析问题的全面性。”
逻辑表达式:
关系运算符:< > <= >=. 左结合 产生结果 0或1 i < j < k ———— ( i < j ) < k ~~~~ i <j && j < k
判等运算符:== != 左结合 产生结果 0或1
逻辑运算符:! && || 逻辑运算符将任何非零值操作数作为真值来处理,同时将任何零值操作数作为假值来处理
&& 和 || 都对操作数进行“短路”计算。也就是说这些运算符首先计算出左侧操作数的值,然后是右侧操作数;如果表达式的值可以由左侧操作数的值单独推导出来,那么将不计算右侧操作数的值。
其副作用就是有些你以为会发生的动作因为被“短路”而没有发生,而且不容易检查出来。 比如 2 > 3 && ++j > 0 ,j 不会自增。 解决方法是单独 ++j 。
if语句
判定 0 <= i < n 是否成立,最好写成:
【惯用法】 if ( 0 <= i && i < n )
为了判定相反的情况,最好写成:
【惯用法】 if ( i < 0 || i > = n)
if ... else ... : else 总是和前面出现的最近的 if 想匹配。