Funny, but for the readers who don't know C -- this isn't true. C has type checking at compile time.
#include <stdio.h>
int main(void) {
unsigned int positive_number = -1;
printf("%d", positive_number);
return 0;
}
Prints -1.And printing it as %d is technically a misuse of printf, since %d means print as a signed integer. If you did %u (print as unsigned integer) instead you'd see the value is really 4,294,967,295 (again, platform dependant)
So in C if I assign a char literal to an int, I get an int. If I do the same in Python, I get a string.
In a strongly typed language, which I'm defining as "needs the left and right hand side of an assignment expression to match somehow", I'd get a type error.