最近看y总的视频,在他的代码里经常出现~1,比如:
for (int i = h[u]; ~i; i=ne[i]) {dfs(e[i],depth+1);}
然后我就不解了,去百度了一通。百度说"~"在C语言里面是二进制取反的意思。
我还是有点不解,然后自己写代码测试了一下,得到以下结果:
~-1 = 0~0 = -1~1 = -2~2 = -3~15 = -16
有点补码内味了,对于十进制的数来说就是先价格负号,然后-1呗。那么上面那个for里面的~i就等价于i != -1了与下面的代码完全等价。
for (int i = h[u]; i != -1; i=ne[i]) {dfs(e[i],depth+1);}
如果觉得《“~i“在C语言的for循环中是什么意思》对你有帮助,请点赞、收藏,并留下你的观点哦!