关于strlen()

EI_Madrigal 2018-04-12 08:24:42
strlen()为什么不能与负数比较大小?
...全文
1652 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
月凉西厢 2018-04-27
  • 打赏
  • 举报
回复
无符号数和有符号数运算,好像有时会有些问题,这个你具体去查下
qq_36260408 2018-04-27
  • 打赏
  • 举报
回复
strlen返回值肯定大于等于0,你和负数也可以比较,比较结果总是真
leetow2006 2018-04-27
  • 打赏
  • 举报
回复
函数strlen()返回的是字符串的长度,应该>=0
jena_wy 2018-04-27
  • 打赏
  • 举报
回复
无符号
月凉西厢 2018-04-27
  • 打赏
  • 举报
回复
引用 10 楼 a34140974 的回复:
无符号数和有符号数运算,好像有时会有些问题,这个你具体去查下
查了下: 无符号与有符号数进行运算时,系统会自动将有符号数看成无符号数,然后进行比较。 举例:假定一个数是8位,一个字节表示 -1=11111111(补码),相当于无符号数255 10=00001010 此时,-1>10
CMAR 2018-04-14
  • 打赏
  • 举报
回复
首先,strlen()返回值在不同c库的版本中不同,有的是int,有的是size_t(usigned int 或 unsigned long); 再次,你的问题应该是返回值是size_t的strlen(),这就是c/c++类型比较时的强制转换问题,rt.
AlbertS 2018-04-14
  • 打赏
  • 举报
回复
不能与负数比较是什么意思,警告还是错误?其实返回字符串的长度必定大于等于0,返回值应该是无符号整数,如果非要和有符号整数比较,可以强转啊!
leetow2006 2018-04-14
  • 打赏
  • 举报
回复
strlen()返回的字符串的长度,应该>=0
luoyely 2018-04-14
  • 打赏
  • 举报
回复
能不能比我不知道,但是没有必要比较啊,strlen()返回值大于等于0,根本不需要和负数比较啊。
自信男孩 2018-04-13
  • 打赏
  • 举报
回复
引用 2 楼 zhouqunhai 的回复:
strlen()得到是数据的类型的大小,必定>0
空串的strlen()得到是0吧
Xiao学生丶 2018-04-13
  • 打赏
  • 举报
回复
strlen()返回的是无符号整型
zhouqunhai 2018-04-12
  • 打赏
  • 举报
回复
strlen()得到是数据的类型的大小,必定>0
自信男孩 2018-04-12
  • 打赏
  • 举报
回复
strlen得到的返回值范围是:>= 0;跟负数比较没意义吧。 可以看一下strlen的原型,返回值是size_t,size_t是unsigned类型。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧