关于atoi的有关问题,请高手们指教

关于atoi的问题,请高手们指教!
我是新手,关于atoi的问题请指教,谢谢!

int atoi(char *s) 

{ int sign=1,m=0; 

  if(*s=='+'||*s=='-') /*判断是否有符号*/

  sign=(*s++=='+')?1:-1; /*用到三目运算符*/ 

  while(*s!='\0') /*对每一个字符进行操作*/ 

  { m=m*10+(*s-'0');

  s++; /*指向下一个字符*/ 

  } 

  return m*sign; 
}
我的问题是:1.第一句红色的语句中的有无符号是什么意思?是判断字符串里是否有“+”/“-”吗?
  2.下面红色语句是的(*s-'0')计算结果是按整数算的吗?还是和前面的m*10计算后才按整数算的?

------解决方案--------------------
第一句是判断正负号,第二个地方是以整数的,所以atoi这个函数是又缺陷的,它对非法的字符是不做判断的
------解决方案--------------------
if(*s=='+'||*s=='-') /*判断是否有符号*/ 

sign=(*s++=='+')?1:-1; /*用到三目运算符*/

这两个语句就是用来判断输入的是正还是负的问题!!!
------解决方案--------------------
单步调试和设断点调试是程序员必须掌握的技能之一。

------解决方案--------------------
关于跳过 整形 前面的正负号 可使用 sprintf 试一试


sprintf(str, "%d", x > 0 ? x : -x);
------解决方案--------------------
if(*s=='+'||*s=='-') /*判断是否有符号*/ 正数?负数

 m=m*10+(*s-'0'); // ascii 码转换 十进制数字
------解决方案--------------------
探讨

第一句是判断正负号,第二个地方是以整数的,所以atoi这个函数是又缺陷的,它对非法的字符是不做判断的