carry += i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0;

int carry =0; String a;
carry += i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0;
请帮忙解释一下这个是怎么运算的,然后结果 ?= 运算后的结果赋给谁了 优先级 : 6.< 13 ?: 14 +=

int carry =0; String a;

carry += i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0;

img

+= :赋值运算符先算右侧的 i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0

那么接下来看右侧的表达式

i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0

上述表达式是一个三目运算

img

Success?成功:失败
三目运算符有限计算问号左侧的表达式如果i < a.length() 为真,则三目运算的表达式值为
“(a.charAt(a.length() - 1 - i) - '0')”, 否则为最后的0

接下来看表达式“(a.charAt(a.length() - 1 - i) - '0')”

img

运算的表达式最大的是一个 - ‘0’的操作,右侧“0”是常量,左侧计算a的charAt的值,a的charAt方法里面参数是一个表达式则优先计算表达式,最后获取a的charAt的结果,最后再参与减‘0’的操作,

最后的最后

img

赋值表达式carry赋值,carry的值等于carry自身的值加上右侧蓝色部分表达式的结果。

表达式最后是一个int 数值

i < a.length() 为true 值 (a.charAt(a.length() - 1 - i) - '0')

i < a.length() 为false 值 0