Сообщение от impersonalis
int L=strlen(str)-1;
bool Minus=(str[0]=='-');
int S=0;
for(int i=L,mul=1;i>=Minus;i--,mul*=10)
S+=((str[i]-48)*mul);
S*=1-2*Minus;
|
Зачем там strlen, двойное умножение и странное отрицание в конце? Проще надо быть:
int simple_atoi ( const char *str )
{
int v = 0;
const bool neg = ( str[ 0 ] == '-' );
for( int i = neg ? 1 : 0; str[ i ] != 0; ++i )
{
v *= 10;
v += ( str[ i ] - '0' );
}
return( neg ? -v : v );
}
но лучше не городить велосипеды и юзать стандартные.