你也说了,这是一种运算符,由运算符组成的表达式的值需要再编译期确定其类型。而两种不同的数据类型进行运算就涉及到了类型转换问题。就好比一个char ch = 'E' + -1;会出现编译错误一样。
第一个输出E是因为x:0中的0是一个直接常量,而0-65535之间的直接常量是可以直接当做char来用的。因为他是一个编译时常量,在编译时就可以确定值。因此运算结果的类型为char。
第二个输出69是因为i:x中的i是一个变量而不是一个编译期常量,因此只能用其声明类型int,而char与int的运算结果是int。 |