关于字符比较的几种形式:
char x1[]={'m','i','c','\0'};
char x2[]={'m','i','c'};
char x3[]="mic";
char *y1="mic";
用”==“判断相等时:
x1==”mic“返回false
x2=="mic"返回false
x3=="mic"返回false
y1=="mic"返回true
用strcmp判断相等时:
strcmp(x1,"mic")==0返回true
strcmp(x2,"mic")==0返回false
strcmp(x3,"mic")==0返回true
strcmp(y1,"mic)"==0返回true
结论:
x2确实与”mic“不相等,因为x2没有‘\0’,编译器不知道x2的大小
其他与"mic"都相等,但是用"=="时,int x[]形式都不可以,所以字符串判断最好用函数strcmp
具体代码:
if(x1=="mic") cout<<"equal"<<endl; else cout<<"not equal"<<endl;
if(x2=="mic") cout<<"equal"<<endl; else cout<<"not equal"<<endl;
if(x3=="mic") cout<<"equal"<<endl; else cout<<"not equal"<<endl;
if(y1=="mic") cout<<"equal"<<endl; else cout<<"not equal"<<endl;
if(strcmp(y1,"mic")==0) cout<<"equal"<<endl; else cout<<"not equal"<<endl;
if(strcmp(x1,"mic")==0) cout<<"equal"<<endl; else cout<<"not equal"<<endl;
if(strcmp(x2,"mic")==0) cout<<"equal"<<endl; else cout<<"not equal"<<endl;
if(strcmp(x3,"mic")==0) cout<<"equal"<<endl; else cout<<"not equal"<<endl;
if("mic"=="mic") cout<<"equal"<<endl; else cout<<"not equal"<<endl;