永发信息网

warning C4018: '>' : signed/unsigned mismatch 是什么原因?

答案:2  悬赏:80  手机版
解决时间 2021-03-15 00:28
  • 提问者网友:末路
  • 2021-03-14 15:51
#include"stdio.h"
#include"string.h"
#include"conio.h"
char *subcut(char *a,int s,int len);
main()
{
int s=3,len=5;
char *ch="hakdjfnvauerjkshohrjauraskjg\n";
printf("%s\n",subcut(ch,s,len));
}
char *subcut(char *a,int s,int len)
{
static char substr[100];
int n;
char *ps;
ps=substr;
if(s<1||s>strlen(a)||len<1) ////warning在这
printf("data error\n");
else
for(n=1,a+=s-1;n<=len && *a!='\0';n++)
*ps++=*a++;
*ps='\0';
return(substr);
}
最佳答案
  • 五星知识达人网友:酒醒三更
  • 2021-03-14 16:33
s是int型的,而strlen函数定义的返回类型是unsigned int型的,所以会报这个告警~
setlen之所以定义为返回unsigned int 是因为一个字符串的长度,肯定大于等于0~
全部回答
  • 1楼网友:荒野風
  • 2021-03-14 16:57
第一个,类型错误 前后类型不符 具体是什么 看你的定义了 应该是一个是有符号数的,一个是无符号的,如果超出有符号数的上限,则会出错,所以提示警告 第二个 没有声明,好像是你没有包含库文件(头文件) 找一下 clrsr在哪个文件里 前面包含进去
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯