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;
+= :赋值运算符先算右侧的 i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0
那么接下来看右侧的表达式
i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0
上述表达式是一个三目运算
Success?成功:失败
三目运算符有限计算问号左侧的表达式如果i < a.length() 为真,则三目运算的表达式值为
“(a.charAt(a.length() - 1 - i) - '0')”, 否则为最后的0
接下来看表达式“(a.charAt(a.length() - 1 - i) - '0')”
运算的表达式最大的是一个 - ‘0’的操作,右侧“0”是常量,左侧计算a的charAt的值,a的charAt方法里面参数是一个表达式则优先计算表达式,最后获取a的charAt的结果,最后再参与减‘0’的操作,
最后的最后
赋值表达式carry赋值,carry的值等于carry自身的值加上右侧蓝色部分表达式的结果。
表达式最后是一个int 数值
i < a.length() 为true 值 (a.charAt(a.length() - 1 - i) - '0')
i < a.length() 为false 值 0