今天在项目中遇到了一个很奇葩的问题,具体什么问题就不说了,找了一下午实在找不出来,百般无奈之时,看到了自己敲的一条不太顺眼的代码:
if(0<i<31)
心想这样写好像不好,于是将其改成if((i>0)&&(i<31)),编译调试,之前出现的问题居然奇迹般的消失了。经过和同学探讨,得出以下别人都知道的结论:
if(0<i<31),程序首先计算0<i,i的范围是0~51,当i>0时,(0<i) == true,在我使用的编译器里面,认为true == 1,于是接着计算(1)<31,显然得到结果依然是true,那么只要i>0,不管i是不是小于31的,if里面的条件都将为真,这样就导致了程序出现意想不到的效果。