Pointers On C Chapter 9

来源:互联网 发布:js input数组 编辑:程序博客网 时间:2024/05/18 01:54
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){    char a[] ="Hello World";    char b[] = "I want to go home";    printf("a的长度为:%d\n",strlen(a));    printf("b的长度为:%d\n",strlen(b));    if(strlen(a) - strlen(b) <= 0)        printf("a is shorter than b");    else        printf("a is longer than b");    return 0;}

输出 a is longer than b

注意strlen 返回的是一个类型为size_t的值,这个类型是在头文件stddef.h定义的,是一个无符号整形,在表达式中使用无符号数可能会导致不可预料的后果,例如下面的 两个例子看上去是相等的;
if( strlen(x) >= strlen(y)) ……
if(strlen(x)-strlen(y) >= 0)……
事实上他们是不相等的,第一条按照你预想的那样工作,第二条语句将永远为真,strlen的结果是个无符号数,无符号数绝不可能是负数,第二条语句的左边也将是无符号数
表达式中如果同时包含了有符号数和无符号数,可能会产生一个奇怪的结果,
if(strlen(x)>=10)…
if(strlen(x)-10 >=0)…
两句返回的结果不一样的

/** * 计算字符串参数的长度 */size_tstrlen(char const *string){     int length;     for(length=0;*string++ != '\0';)          length += 1;     return length;}

摘自C和指针P176

0 0
原创粉丝点击