在我的java代码中我有
result.append((num%b2)>=10?((char)('A'+((num%b2)-10))):(num%b2));
其中num和b2都是整数。当num%b2大于或等于10
时((char)('A'+((num%b2)-10)))
附加到stringbuilder结果。但是,它不是附加一个char,而是附加一个int值,其中包含我想要返回的char的ASCII号。为什么它不会返回char?
答案 0 :(得分:1)
因为(num%b2)
是int
。
条件表达式的类型是可以表示两个操作数的通用类型。所以,如果" true"操作数是char
但是" false"操作数是int
,someCondition ? someChar : someInt
的结果是int
。
如果你把它写成一个普通的if-else语句,那就更清楚了:
if (num%b2 >= 10) {
result.append((char)('A'+((num%b2)-10)));
} else {
result.append(num%b2);
}
答案 1 :(得分:0)
只需将其转换为字符串,它就会将其附加为字符串:
git rm