>>59
When would you ever shift an integer by a value greater than or equal to its width? The article didn't say pointer aliasing would lead to undefined behaviour. Just that converting a pointer to an incompatible type and then dereferencing it would.
>>60
You're right, but what do translation units have to do with it?
>>65
As mentioned, it's only undefined for automatic variables. The standard says:
If an object that has static storage duration is not initialized explicitly, then:
— if it has pointer type, it is initialized to a null pointer;
— if it has arithmetic type, it is initialized to (positive or unsigned) zero;
— if it is an aggregate, every member is initialized (recursively) according to these rules;
— if it is a union, the first named member is initialized (recursively) according to these rules.