麻烦问下第18行代码if (!match)括号里面为什么要加感叹号,if()语句里面加!是什么意思啊

源代码:
#include<stdio.h>
#define N 10
int main()
{
int i,x,t,a[10]={63,72,24,91,35,12,49,107,57,84},flag=0; scanf("%d",&x); /********** Begin /
for(i=0;i<10;i++)
{
if(a[i]==x)
{
printf("查找成功,%d的下标:%d",x,i);
flag=1;
continue;
}
}
if(!flag)
printf("查找失败");
/ End **********/
return 0;}
if(!flag)相当于if(flag<=0)
18行是为了显示查找失败的信息的,因为你的flag表示的意思是查找成功
逻辑运算,非