~i与i>=0有什么不同

敲代码的时候
for循环的条件写的是~i,结果超出时间限制了
但只要改为i>=0就可以过掉题目

所以两者有什么不同吗?_?

~是一个按位取反的操作,~i就是去~i的取反。在form循环中,相当于一个死循环。
i>=0,是有条件限制的,当不满足的时候就会退出for

~代表取反,
~i,你i的值是一个整数。
对一个取反,就是对数值的二进制按位取反,0变为1, 1变为0
除了 ~(-1) 得到的是 0,其他整型数取反都是非0的
c++中非0代表真,0代表假,那么其他整型数取反进行条件判断,就都为真

首先循环最重要的一点是需要有限制条件,~是按位取反,不能作为限制条件,而>=是一个限制条件,符合条件会在循环中,不符合条件便会跳出循环

~是按位取反的二进制运算符,不能作为限制条件,会造成死循环,对一个取反,就是对数值的二进制按位取反,0变为1, 1变为0,如10010按位取反为01101,除了 ~(-1) 得到的结果是 0(负数符号位为1,-1的二进制为11),其他整型数取反结果都是非0的,每次循环都得到非0,继续运行...造成死循环。
“>=”是个限制条件,如for(int i=100;i>=1;i--),这样循环才能有限制

求采纳啊啊啊

这俩逻辑不等价,c里面表达式为0才为假,如果i是int那么只有i等于-1时才为假。剩下的都是真,

我猜你不知道什么是~
而且你也根本没有搞懂二值逻辑
if(i>=0)和if(i)是等价的
if(i<0)和if(!i)是等价的
而~i是个算术运算,按位取反