You're converting a char into an int, chars use the ASCII table where '3' happens to be 51.
If you want the integer to have the value 3 try something like this: int a = '3' - '0';
It's pretty simple really, whenever you want to convert a digit in the form of a char to an int just subtract the ascii value for 0 like I showed you above.
Or in your code:
1 2 3
a = string[start]-'0';
...
a = a * (string[b]-'0');