I can't understand the following atoi
implementation code, specifically this line:
k = (k << 3) + (k << 1) + (*p) - '0';
Here is the code:
int my_atoi(char *p) {
int k = 0;
while (*p) {
k = (k << 3) + (k << 1) + (*p) - '0';
p++;
}
return k;
}
Can someone explain it to me ?
Another question: what should be the algorithm of atof
implementation ?
means
Does that help?
The
*p - '0'
term adds the value of the next digit; this works because C requires that the digit characters have consecutive values, so that'1' == '0' + 1
,'2' == '0' + 2
, etc.As for your second question (
atof
), that should be its own question, and it's the subject for a thesis, not something simple to answer...