明明两个是相同的计算过程,为什么稍微修改一下形式,结果会大相径庭呢?
题很简单,但我真的不懂啊!
请帮忙答疑解惑 。【鞠躬】
因为前者是两个ascii码相加后转成char,char再转int输出;后者是两个ascii相加84+69=153直接作为int输出。
而对于前者: char如下所示其范围-128~127:
0000 0000 -》 0111 1111 0 -》 127
1000 0000 -》 1111 1111 -128 -》 -1
即对于你自己的写法可以表示为 01010100 + 01000101=10011001 算到这儿,可知1是符号位 剩下7位是0011001=25,那么计算结果就是1000000= -128 加上这个25= -103 即为最终结果。
(此处更详细的原理可见https://blog.csdn.net/sbknight/article/details/122240235)