char不是会自动转int,为什么会退出循环

char不是能自动转int,为什么会退出循环?
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

int main(){
int val;
int sum = 0;
while(cin>>val){  //<-----------------------------------------------这
sum+=val;
}
cout<<sum<<endl;
return 0;
}


1
2
a
3
Press any key to continue


------解决方案--------------------
因为,字符'a'不是整型期待的有效输入。
转型值得是变量之间的转型,现在的'a'只是一个输入,还没有形成变量的概念。