当前位置: 技术问答>linux和unix
linux 下对strlen做逻辑判断的问题.
来源: 互联网 发布时间:2016-01-11
本文导语: #include int main() { char s[]="123456"; char ds[7]=""; int a=0; int d=-1; int c; a = strlen(ds)-2; d = strlen(s) > (strlen(ds)-1); printf("s...
#include
int main()
{
char s[]="123456";
char ds[7]="";
int a=0;
int d=-1;
int c;
a = strlen(ds)-2;
d = strlen(s) > (strlen(ds)-1);
printf("strlen(s) is %dn d is %d; a is %dn", 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
int main()
{
char s[]="123456";
char ds[7]="";
int a=0;
int d=-1;
int c;
a = strlen(ds)-2;
d = strlen(s) > (strlen(ds)-1);
printf("strlen(s) is %dn d is %d; a is %dn", 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
|
strlen的返回值是无符号类型的,-1就是0xFFFFFFFF,按照无符号类型来比较,你说哪个大?