linux 下对strlen做逻辑判断的问题.

girlsjj 2007-03-03 03:49:52
#include <string.h>
int main()
{
char s[]="123456";
char ds[7]="\0";
int a=0;
int d=-1;
int c;
a = strlen(ds)-2;
d = strlen(s) > (strlen(ds)-1);
printf("strlen(s) is %d\n d is %d; a is %d\n", strlen(s),d, a);
return 0;
}
程序超级简单。但是输出无法理解:
strlen(s) is 6
d is 0; a is -2

d的值是逻辑判断 strlen(s) > (strlen(ds)-1) 的结果。应该是1。但是却成了0
哪位指点一下啊。不胜感激啊~~

系统是RedHat ES
kernal 版本是2.4.21
...全文
272 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyg2008 2007-03-03
  • 打赏
  • 举报
回复
strlen的返回值是无符号类型的,-1就是0xFFFFFFFF,按照无符号类型来比较,你说哪个大?

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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