i是bit的话相等,如果是其他数据类型就不相等,第一个是逻辑非,第二个是按位取反,的也就是说第一个必须等于0才能进去if语句,如果其他一律进不了if
第二个是只有当数据全部是1的时候才能不进if,比如char类型0xff是进不去if, 其他数据都能进if
感叹号是个非操作,bool 类型
波浪线是取反操作,按位取反,数据类型和i保持一致。
比如i=0x01,非操作,是false,取反操作是0xfe,非0就是true,一个false一个true
if(!i) if(~i) 肯定不一样
!i 是逻辑取反,
~i是按位取反,
如果i是一个非0值,比如01010101(b),则!i变成0,而~i还是非0值。
不能等效,!:逻辑非运算。~:一个数的二进制取反码,也就是按位取反。
!输出bool类型变量eg:!a,如果a是非零数0x02那么!a = false;而~a就是0xfd;