黑马程序员技术交流社区
标题:
类型转换的问题
[打印本页]
作者:
sunsteam
时间:
2015-8-20 00:20
标题:
类型转换的问题
class Test819
{
public static void main(String args[])
{
char a = 5;
char b = 6;
//char c = a+b;
char d =5+6;
char e ='t';
System.out.println(a);
System.out.println(b);
//System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(a+b);
System.out.println(a+e);
}
}
复制代码
char d 是可以通过的 为什么char c就会报错呢?
作者:
liuch111
时间:
2015-8-20 10:17
应为 char c 中 的char 类型在运算中 隐含转换成了int型 int赋值给char时需要 强制转换
但是 char d 中数字运算时并没有 隐含转换的功能,所以赋值给char 没问题
作者:
kevin986745zk
时间:
2015-8-20 10:30
类型转换的问题
作者:
taoaisheng
时间:
2015-8-20 20:08
char d 表示的是两个字符(ASC码值),因此a+b的结果依旧是字符型即为ASC码值,而char c=a+b;中的a和b相当于两个变量,默认的类型为int型,因此,在运行时会出现错误。改成 char c=(char)(a+b)即可
作者:
burningzzy
时间:
2015-8-20 20:54
char类型在运算时默认转换为int,类型,相加的结果也就为int类型,所以如果不强制转换就会报错.
作者:
飞飞小狮子
时间:
2015-8-20 21:09
??????????????????
作者:
阮文江
时间:
2015-8-20 21:30
a+b应该是int型的吧,要强制int转char要显式转换
作者:
段山虎
时间:
2015-8-20 22:19
不晓得 = =
作者:
iamzk
时间:
2015-8-20 22:35
类型自动提升造成的
作者:
limaowei666666
时间:
2015-8-20 22:46
数字做运算默认转为int型的,如果 int c=a+b;就对了,或者强转.因为int的类型要比char类型要大,大的类型不能往小的类型里转. 至于 char d =5+6;为什么可以,是因为5+6为11,虽然也是大类型往小类型转,但是已经明确5+6的值是在char的范围之内的. 在编译的时候只运行,不计算.char c=a+b时,a,和b仅仅只是变量,不知道值是多少;
作者:
代晃
时间:
2015-8-20 22:58
因为a+b相加的时候把a 和b都转成了int类型的。 所以用char接收就会报错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2