The char is of unicode to store charcters.
In your case '0' is representing a char of value 48.
There is implicit conversion of char to int, means no need to use
y -= (int)'0'
http://msdn.microsoft.com/en-us/library/x9h8tsay%28v=vs.80%29.aspx
Resolving n Evolving in C# (http://jeanpaulva.com)