C语言中sizeof和strlen的区别是什么

互联网 20-11-20

C语言中sizeof和strlen的区别是:strlen是一个函数,用来计算指定字符串str的长度,但不包括结束字符(即null字符);而sizeof是一个单目运算符,不是函数。

区别分析:

size_t strlen(char const* str);
char sArr[] = "ILOVEC"; /*用strlen()求长度*/ printf("sArr的长度=%d\n", strlen(sArr));
/*判断一*/ if(strlen(x)>= strlen(y)) { } /*判断二*/ if(strlen(x)- strlen(y)>= 0) { }

从表面上看,上面的两个判断表达式完全相等,但实际情况并非如此。其中,判断表达式一没什么问题,程序也能够完全按照预想的那样工作;但判断表达式二的结果就不一样了,它将永远是真,这是为什么呢?

原因很简单,因为函数 strlen 的返回结果是 size_t 类型(即无符号整型),而 size_t 类型绝不可能是负的。因此,语句“if(strlen(x)-strlen(y)>=0)”将永远为真。

同样,就算表达式中同时包含了有符号整数和无符号整数,还是有可能产生意想不到的结果,如下面的代码所示:

/*判断一*/ if(strlen(x)>= 5) { } /*判断二*/ if(strlen(x)- 5>=0) { }

很显然,判断表达式二的结果还是永远是真,其原因与上面相同。

char sArr[] = "ILOVEC"; /*用sizeof求长度*/ printf("sArr的长度=%d\n", sizeof(sArr));

相关推荐:C#.Net开发图文教程

以上就是C语言中sizeof和strlen的区别是什么的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: strlen
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:c源程序中main函数的位置是什么?

相关资讯