敲代码的时候
for循环的条件写的是~i,结果超出时间限制了
但只要改为i>=0就可以过掉题目
所以两者有什么不同吗?_?
~是一个按位取反的操作,~i就是去~i的取反。在form循环中,相当于一个死循环。
i>=0,是有条件限制的,当不满足的时候就会退出for
~代表取反,
~i,你i的值是一个整数。
对一个取反,就是对数值的二进制按位取反,0变为1, 1变为0
除了 ~(-1) 得到的是 0,其他整型数取反都是非0的
c++中非0代表真,0代表假,那么其他整型数取反进行条件判断,就都为真
首先循环最重要的一点是需要有限制条件,~是按位取反,不能作为限制条件,而>=是一个限制条件,符合条件会在循环中,不符合条件便会跳出循环
这俩逻辑不等价,c里面表达式为0才为假,如果i是int那么只有i等于-1时才为假。剩下的都是真,
我猜你不知道什么是~
而且你也根本没有搞懂二值逻辑
if(i>=0)和if(i)是等价的
if(i<0)和if(!i)是等价的
而~i是个算术运算,按位取反