It means that the compiler will generate no warning if you try to use a type in a way that doesn't make sense for that type. For example, the following is undefined behavior and in practice will copy the bits of a pointer into the bits of a float, where they make absolutely no sense. If sizeof(char*) > sizeof(float), it will overwrite whatever memory locations happen to be just above where f lives.
float f;
char *c = someString();
memcpy(&f, &c, sizeof(char*));