whats does '0' means in this code?

Feb 24, 2013 at 2:44pm
can anyone tell me whats the meaning of '0' in this code?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
string add (string &s1, string &s2)
{
    int carry=0,sum;

    string  min=s1, max=s2, result = "";

    if (s1.length()>s2.length())
    {
        max = s1;
        min = s2;
    } else
    {
        max = s2;
        min = s1;
    }

    for (int i = min.length()-1; i>=0; i--)
    {
        sum = min[i] + max[i + max.length() - min.length()] + carry - 2*'0';

        carry = sum/10;
        sum %=10;

        result = (char)(sum + '0') + result;
    }

    i = max.length() - min.length()-1;

    while (i>=0)
    {
        sum = max[i] + carry - '0';
        carry = sum/10;
        sum%=10;

        result = (char)(sum + '0') + result;
        i--;
    }

    if (carry!=0)
    {
        result = (char)(carry + '0') + result;
    }       

    return result;
}


this will add big integers..
Last edited on Feb 24, 2013 at 2:44pm
Feb 24, 2013 at 2:46pm
'0' is the ASCII character for zero.
Feb 24, 2013 at 2:51pm
It is a character which represents the digit zero.
Internally, each character can be represented by a number, for example 'A' is 65 and '0' is 48 in the ASCII code.

The reason why it is used is to convert to/from ordinary text and an actual number which can be used in computations.
Feb 24, 2013 at 2:53pm
so why does it have to put '0' while you can do arithmetic operations with just a normal integer 0 (w/o quotation)?

in line 41....does it mean you are adding the sum of the character zero and carry to result?
Feb 24, 2013 at 2:53pm
'0' is the ASCII character for zero.

Well, more generally, '0' is the character zero. It needn't be ASCII, if the operating system uses some other encoding, such as EBCDIC.
Feb 24, 2013 at 3:04pm
so why does it have to put '0' while you can do arithmetic operations with just a normal integer 0 (w/o quotation)?

Because integers ans string are represented differently.
result is a string, so you want the digits you store into it to be in character representation. The decimal value of ASCII '0' is 48. So you have to bias the integer digits you store into result by that.

in line 41....does it mean you are adding the sum of the character zero and carry to result?

carry and '0' are converted to a character value, then that character value and the previous result string are concatentate and stored in result.
Feb 24, 2013 at 3:32pm
'0' is the integral offset into the ASCII table where the numbers are represented. To turn an ASCII number ('0' - '9') into its decimal representation (0 - 9) you can subtract the offset.

For example, '1' - '0' == 1.

Last edited on Feb 24, 2013 at 3:32pm
Feb 25, 2013 at 2:58am
ahh..now i get it :) thank you very much for the help :)
Topic archived. No new replies allowed.