对字符型变量求和问题

下面这个程序,val被我定义成了char型,那么我输入123的时候,输出的sum是150,请问这个结果是怎么得出来?计算机内部是怎么计算的?
#include
int main()
{
int sum=0;
char val;
while(std::cin>>val)
sum+=val;
std::cout<<"sum "<< "is "<<sum
<<std::endl;
return 0;
}
图片说明

计算机是将字符串1、2、3转化成哈希码之后相加的 "1"转化是49,"2"是50,"3"是51,相加就是150.

sum = '1'+'2'+'3' = 150

豁然开朗,非常感谢!