c语言中 !strcmp(a,b)是什么意思?注意有个感叹号!

原句子是:if(!strcmp(a,b))
break;

简单的说就是:
strcmp是个比较函数,用法就是a>b返回1,a<b返回-1,a==b返回0.
C语言规定非0为真,0为假。!号是取非,即把0变成1,非0变成0;
假设a=5,b=4
那么a>b,返回结果为1,取非之后为0,既为假.就不会执行下面的break语句。
假设a=4,b=5
结果为a<b,返回值为-1,取非之后也是0,还是假,也不会执行下面的break语句。

只有当a和b相等时,才会执行break语句,既跳出语句。
比如a=5,b=5时。
a == b,strcmp的返回值稳定为0,取非之后为1,if判断为真,就开始执行break语句
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-08
a串和b串相等(本来相等是0为假,!以后就成真了)
第2个回答  2013-04-08
比较 a b 字符串,若 a b 字符串相等,则 !运算后返回 1 ;
若 a < b 或 a>b ,则返回 0;
相似回答