strcmp
int strcmp(constchar*str1,constchar*str2);
str1和str2可以是字符串常量或者字符串变量,返回值为整形。返回结果如下规定:
①str1小于str2,返回负值或者-1(VC返回-1);②str1等于str2,返回0;
③str1大于str2,返回正值或者1(VC返回1);
函数形式如下:
int strcmp(const char *str1, const char *str2)
{
int ret=0;
while( !(ret = *(unsigned char*)str1 - *(unsigned char*)str2 ) && *str1 )
{
str1++;
str2++;
}
if(ret < 0)
return -1;
else if(ret > 0)
return 1;
return 0;
}
unsigned char
int/long/short等不指定signed/unsigned时都默认是signed
char在标准中是unsigned
都占1个字节
那么 char与signed char, unsigned char这三者的区别
1.ANSI C 提供了3种字符类型,分别是char、signed char、unsigned char。而不是像short、int一样只有两种(int默认就是unsigned int).
2.三者都占1个字节
3.signed char取值范围是 -128 到 127(有符号位)
unsigned char 取值范围是 0 到 255
4.内存中一串二进制,它的含义,就是这个类型来说明的。
5.所谓signed char 和 unsigned char 其实是相对“运算”而说的,已经脱离了我们字面含义“字符”,表示的范围有限。
6.不同的编译器对char是什么定义不一样,因为这三种类型的对象在存储介质中的表现形式是一样的(都是一个占8bit的01串,只是解析的时候不同)。
char的使用方法
1)当字符用
表示一个ASCII码0-127
2)当单字节整数
从本质上来说,字符('a', 'b', 'c'等)本质上也是一个整数,只是字符代表的值是0~127,我们可以用char表示一个不太大的整数
signed char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255。
但是屏幕上面的显示可能不一样。
char可以赋值给整数类型,但是如果要用char表示数据类型,只能是整数类型,signed范围一般不能超出-128~127,无符号可以表示0-255.超出会溢出的
ANSI C (ANSI C是C语言的标准,任何C语言的编译器都在ANSI C的基础上扩充。ANSI C几乎不能完成任何程序的开发。TC、VC等都对ANSI C进行了扩充,加入了自己的规则和库之类的。)