发布网友 发布时间:2022-04-24 06:00
共3个回答
热心网友 时间:2023-10-05 10:59
byte和int的位数不同,byte是8位,最大能表示127,int是在不同编译器里面是不同的,有16位或者32位,3可以用8位来表达,所以可以赋值给byte变量,但是b1+b2编译器在编译的时候是不知道算出来是否足够用8位表示,只知道算出来是一个int值,有可能是大于8位的int值,这个时候byte就表示不了了,你可以分别试试让127和128赋值给byte变量,你就会明白了追问如果int的b1+b2大于int不是也要报错 为什么还能得出结果 byte就不行
追答这是编译阶段,编译器只会判断编译逻辑,byte x = b1+b2这种表达式涉及到类型转换,是int转化为byte型,所以编译器要把关,而int x = b1+b2没有涉及类型转换,始终是int转int,编译器视其为安全的,你要明白编译阶段编译器是不会实际算出值来的,它只会考虑这种写法是否存在编译逻辑问题
热心网友 时间:2023-10-05 10:59
byte short 运算的时候会自动转换成int,我想问下 x是什么类型 不要贴一半的代码上来没人能看懂追问第一个是byte x=2 第二个是int x=2
热心网友 时间:2023-10-05 11:00
一个byte型整数在内存中占8位,也就是一个字节. 表数范围:-128 --127