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;
не читабельно. особенно вот это: for(int i=L,mul=1;i>=Minus;i--,mul*=10)
можно i вообще выкинуть.
for(int mul=1;L>=Minus;L--,mul*=10)
хотя читабельность много важнее минимально числа строчек. я бы вообще написал как-то так:
int L=strlen(str)-1;
bool Minus=(str[0]=='-');
int S=0, mul = 1, first_number = Minus?1:0;
while(L>first_number)
{
S+=((str[L]-'0')*mul);
--L;
mul *= 10;
}
if(minus)
S = -S;
да, тут есть по сути лишние строчки, типа
first_number = Minus?1:0. которые делают совершенно лишнюю работу. но, если это не глубоко в ядре, то читабельность важнее.
Platon опередил. вот его вариант в разы читабельне, имхо.