Well, I hardly ever use console stuff but I believe that you can just do it like how you have done except instead of !cin>>n using cin.fail (it's a bool)..
Code:
int n;
do
cout<<"Enter a number:";
cin>>n;
while(cin.fail);
As for the value the variable will take when a char is entered, I don't think it will take any value. It isn't initialized in your example so it probably has some random number in it.
__________________ Omnis mico antequam dominus Spookster!