一句话理解
! 把真变假、假变真。
为什么要学
“如果还没访问过”写成 !vis[i]。
讲解
!true 是 false。if (!ok) 表示 ok 为假时进入。
!!x 能把整数压成严格的 0/1,但不必炫技。
不要写成 not 的奇怪组合,除非你很清楚替代关键字。
例子
bool vis = false;
cout << (!vis);
输出:
1
没访问过,!vis 为真。
常见错误
if (!x == 0)优先级错,应写if (!(x == 0))或if (x != 0)。