I think it is because C is just more flexible when it comes to handling memory.. hence giving your more control over it.
 Another thing I can think of is that char is one byte while int is four. C++ compiler probably catches that as an error to prevent such assignment. but since C is naturally more flexible with memory/pointer, it's just an error? Well, maybe I'm just talking out of my ass..