C ++ - 添加或减去' 0'从一个价值

时间:2016-06-07 15:14:19

标签: c++

我正在查看下面的代码,我得到了逻辑,但我似乎无法理解'0'的用途。

class Solution
{
public:
    string addBinary(string a, string b)
    {
        string s = "";

        int c = 0, i = a.size() - 1, j = b.size() - 1;
        while(i >= 0 || j >= 0 || c == 1)
        {
            c += i >= 0 ? a[i --] - '0' : 0;
            c += j >= 0 ? b[j --] - '0': 0;
            s = char(c % 2 + '0') + s;
            c /= 2;
        }

        return s;
    }
};

4 个答案:

答案 0 :(得分:8)

C和C ++标准要求字符'0'..'9'是连续的并且不断增加。因此,要将其中一个字符转换为其代表的数字,您需要减去'0'并将数字转换为代表它的字符,然后添加'0'

答案 1 :(得分:4)

C ++要求([lex.charset] / 3)在基本字符集中,数字'0''1''2',...,{{1}被编码为连续值。这意味着给定数字字符'9',您可以将其整数值计算为表达式c

答案 2 :(得分:1)

价值' 0'表示数字字符表示的ascii表的偏移量。 要比较两个值,当一个是ascii而另一个是二进制时,您需要转换为相同的基本表示。

答案 3 :(得分:1)

在ASCII码字符0中,表示为' 0'在C(和许多其他语言)中具有值48.在ASCII中,其他9个数字是连续的:' 0',' 1'等。 字符串由字符组成。所以如果你减去0' 0' 0到另一个数字,你得到它的数值。