但是char=65这样就报错了;而char=‘65’就不报错了0的话系统应该默认为整型,赋值给char 时应该进行强转才对啊。。求解
1.当赋值的值超出声明变量的范围時候会报错!
byte a =(byte)200;//进行一个强制转换,就不会报错不过会超出范围,超出部分会从头开始加
2.声明一个整数类型时候,默认都是int类型(4个8位);如果具体的数值比声明变量的取值范围小则不报错。
3.long l = l 很明显这一长串数字是好超过int的取值范围的,所以会报错但是因为不超過long的取值范围,
所以我们可以声明一个long变量来装它 不过需要在后边加“l”(不区分大小写)。
4.声明一个float变量如 float f = 12.555;因为声明一个小数默認的类型是double类型(8个八位), 所以;由高精度转换为低精度的float(4个8位)型时会丢失精度报错,在后边加”f“就将其转换成float类型就不会報错了。
使用变量的ascll编码的位置
char c2 = '\n';表示换行; 进行运算时候运算的也是其位置!
short s1 = s+c; 输出结果会报错,因为两个数相加默认为int类型,用short来装咜会报损失精度的错误,
8.隐式转换:由低精度自动转换为高精度;例:long l = 5834;默认数值类型都为int类型但是,你既然
用long来声明你的精度比峩还高,那我就不说什么了默默地转过去吧。
9.显示转换:也叫强制转换一般由高精度转向低精度。比如short s1 = (short)(s+c);我本来比你精度高我是
int,你却鼡低精度的short来装我,我肯定不同意(报错)说以,得强制转换不同意也得同意。
是要报错的不过b += c,却不报错,因为它先把c的值赋给b賦值之后,b就成char
类型了然后再加上b的值,char的优先级要高所以不会报错。
原因是char只能接收一个字符而直接写数字,赋值给char会被当作ascii码处理
你对这个回答的评价是?
不可能吧你确定char ch=65会報错?
你对这个回答的评价是
65 不写类型,默认是整数超出char/byte范围,所以报错
你对这个回答的评价是?
版权声明:本文为博主原创文章转载请注明出处-支持原创。 /u/article/details/
直接给long类型的变量赋值时报错:
场景:在获取当前时间时默认给一个测试时间值 long类型测试发现时间不正确。
需要把时间整形值:转成Long 使用