今天看题解的时候看到一句话:
for(int i=head[x]; ~i; i=ne[i])
这里面中的“~i”,是什么意思呢?
今天看题解的时候看到一句话:
for(int i=head[x]; ~i; i=ne[i])
这里面中的“~i”,是什么意思呢?
~i表示对i的二进制按位取反,它在这个循环中作为结束条件,应该是表示当i的二级制按位取反后为0,则退出循环。
测试代码如下:
参考链接:
https://blog.csdn.net/m0_65096921/article/details/125791768
https://blog.csdn.net/weixin_46582567/article/details/124598001
#include <stdio.h>
#include <stdlib.h>
int main(void){
int i = 2;
// https://blog.csdn.net/weixin_46582567/article/details/124598001
char bStr[33]={0};
itoa(i,bStr,2); // 将i转为对应的二进制字符串
int i2 = ~i;
char bStr2[33]={0};
itoa(i2,bStr2,2); // 将~i转为对应的二进制字符串
// https://blog.csdn.net/m0_65096921/article/details/125791768
// https://blog.csdn.net/qq_41705423/article/details/104648397/
// https://baike.baidu.com/item/printf/7467706?fr=ge_ala
// 打印i和~i及其对应的二进制串
printf("i=%d,\t二进制为:%032s\n",i,bStr);
printf("~i=%d,\t二进制为:%032s\n",i2,bStr2);
return 0;
}