simper 发表于 2021-1-28 20:04

java关于字符和整形的问题求助

char i='a';
char j='a'+1;//b
char k=i+1;//报错,从int转到char可能会有损失
大佬们求助为什么第二行可以运行第三行报错啊,数字1默认应该是int型,int型与char型相加不应该自动升级为int型吗

孤狼微博 发表于 2021-1-28 21:54

默认是int型的 你前面定义了类型

GGbond 发表于 2021-1-28 22:06

就我个人理解,第三行把i当成变量,底层无法判断该值是否在char 65535范围内。

古月不傲 发表于 2021-1-28 22:17

本帖最后由 古月不傲 于 2021-1-28 22:31 编辑

g++ 编译 加上-Wconversion也会发出警告,我的猜测可能是它把值先放在eax寄存器的缘故,编译器直接把eax + 1,然后mov al给这个变量的内存地址 所以可能会截断
第二行是直接计算出结果movb给了这个变量,没有经过中转

SpeII 发表于 2021-1-28 22:24

其实感觉第二行应该也返回int,编译能通过应该是帮你强转了,但运行时就有可能报异常
页: [1]
查看完整版本: java关于字符和整形的问题求助