java关于字符和整形的问题求助
char i='a';char j='a'+1;//b
char k=i+1;//报错,从int转到char可能会有损失
大佬们求助为什么第二行可以运行第三行报错啊,数字1默认应该是int型,int型与char型相加不应该自动升级为int型吗 默认是int型的 你前面定义了类型 就我个人理解,第三行把i当成变量,底层无法判断该值是否在char 65535范围内。 本帖最后由 古月不傲 于 2021-1-28 22:31 编辑
g++ 编译 加上-Wconversion也会发出警告,我的猜测可能是它把值先放在eax寄存器的缘故,编译器直接把eax + 1,然后mov al给这个变量的内存地址 所以可能会截断
第二行是直接计算出结果movb给了这个变量,没有经过中转
其实感觉第二行应该也返回int,编译能通过应该是帮你强转了,但运行时就有可能报异常
页:
[1]