所以我有这个代码
char [] a = {'a','b','c'};
char c = 'a' + 'b'; //works
char c2 = 98 + 97; //works
char c3 = a[0] + a[1]; //compile time error
所以它们都是相同的功能,但在获取和使用数组值时,它给了我一个编译时错误。造成这种情况的原因是什么?
The result of the additive operator applied two char operands is an int.
然后我为什么要这样做?
char c2 = (int)((int)98 + (int)97);
答案 0 :(得分:2)
The result of the additive operator applied two char
operands is an int
.
对操作数执行二进制数字提升。 数值操作数上的加法表达式的类型是其操作数的提升类型
前两个是常量表达式,其结果值为int
,可以安全地分配给char
。
第三个不是常量表达式,因此编译器无法保证。
同样
然后我为什么要这样做?
char c2 = (int)((int)98 + (int)97);
这也是一个常量表达式,结果可以放在char
中。
尝试使用更大的值,12345
和55555
。