以下代码基本上采用字符串并将其转换为整数值。我不明白为什么int digit = s[i] - '0';
是必要的。为什么不能使用int digit = s[i]
代替它呢? -'0'
有什么目的?
int main(){
string s = "123";
int answer = 0;
bool is_negative = false;
if (s[0] == '-')
{
is_negative = true;
}
int result = 0;
for (int i = s[0] == '-' ? 1 : 0; i < s.size(); ++i)
{
int digit = s[i] - '0';
result = result * 10 + digit;
}
answer = is_negative ? -result : result;
cout << answer << endl;
system("pause");
}
答案 0 :(得分:2)
首先,在你的问题标题中
使用'0'
应该写成
使用
s[i] - '0'
也就是说,通过减去char
0 ASCII value(表示为'0'
),我们得到int
中代表的数字的char
值格式(主要是ASCII值。)
答案 1 :(得分:0)
这是因为s [i]中的值是char
类型。
要将char'1'转换为整数,请执行'1' - '0'得到1.这由ASCII表中的位置确定,char'0'为48,而char'1'为49.
答案 2 :(得分:0)
减法的原因是int hour = Integer.parseInt(time.substring(0, 2));
int minute = Integer.parseInt(time.substring(3));
例如是s[i]
。值'6'
的计算结果为'6'
(ascii代码)。 &#39; 0&#39;的ASCII码是54
= 6,这是以'6' - '0'
表示的char值。