的结果someCondition ? a : b
为普通型a
和b
.在这种情况下,公共类型str.charAt(pos)
(char)和-1
(int)是int.这意味着您的str.charAt(pos)
值被转换为int - 基本上,转换为其unicode代码点,在这种情况下与其ASCII值相同.
49是字符"1"的代码点.
如果你想让c成为数字'1',最简单的方法是减去'0'的代码点:
c = (++pos < str.length()) ? (str.charAt(pos) - '0') : -1;
这是有效的,因为所有数字都以unicode顺序排列,从"0"开始.通过从这些中减去char'0'的值 - 也就是int 48 - 你得到你想要的值:
'0' = 48 - 48 = 0 '1' = 49 - 48 = 1 ... '9' = 57 - 48 = 9