【发布时间】:2018-02-01 07:20:26
【问题描述】:
我参考了一个时间转换程序,但无法理解部分代码。这是完整的程序。
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
string s;
cin >> s;
int n = s.length();
int hh, mm, ss;
hh = (s[0] - '0') * 10 + (s[1] - '0');
mm = (s[3] - '0') * 10 + (s[4] - '0');
ss = (s[6] - '0') * 10 + (s[7] - '0');
if (hh < 12 && s[8] == 'P') hh += 12;
if (hh == 12 && s[8] == 'A') hh = 0;
printf("%02d:%02d:%02d\n", hh, mm, ss);
return 0;
}
我无法理解的部分代码是
hh = (s[0] - '0') * 10 + (s[1] - '0');
mm = (s[3] - '0') * 10 + (s[4] - '0');
ss = (s[6] - '0') * 10 + (s[7] - '0');
提前致谢。
【问题讨论】:
-
那些不是字符串,它们是
char -
这会有所帮助,请参阅 ASCII Table
- '0'将数字从其 ASCII 字符 值转换为其实际的十进制 numeric 值。跨度>