
gcc警告数组下标为char
#include<stdio.h>#include<ctype.h>intatoi(char*str);intmain(intargc,char**argv){intnu...
#include<stdio.h>
#include<ctype.h>
int atoi(char *str);
int main(int argc, char **argv)
{
int num;
num = atoi(argv[1]);
printf("%d\n", num);
return 0;
}
int atoi(char *str)
{
int result = 0, sign = 1;
if(str[0] == '+')
++str;
else
if(str[0] == '-')
{
sign = -1;
++str;
}
while (*str)
{
if(!isdigit(*str))
break;
else
{
result = 10 * result + *str - '0';
str++;
}
}
return sign * result;
}
int atoi(char *str)
{
int result = 0;
while (*str >='0' && *str <='9')
{
result = 10 * result + *str - '0';
str++;
}
}
这是源码,现在不大明白这个警告,警告出现在if(!isdigit(*str))这里 展开
#include<ctype.h>
int atoi(char *str);
int main(int argc, char **argv)
{
int num;
num = atoi(argv[1]);
printf("%d\n", num);
return 0;
}
int atoi(char *str)
{
int result = 0, sign = 1;
if(str[0] == '+')
++str;
else
if(str[0] == '-')
{
sign = -1;
++str;
}
while (*str)
{
if(!isdigit(*str))
break;
else
{
result = 10 * result + *str - '0';
str++;
}
}
return sign * result;
}
int atoi(char *str)
{
int result = 0;
while (*str >='0' && *str <='9')
{
result = 10 * result + *str - '0';
str++;
}
}
这是源码,现在不大明白这个警告,警告出现在if(!isdigit(*str))这里 展开
2个回答
展开全部
C/C++数组下标要求是正整数或者0。而char则有可能为负整数,故有此警告。在*str前面加类型转换(unsign char)试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询