The comment suggested the standard make it implementation defined rather than undefined. There's not a meaningful difference here.
Even today, an implementation may define unsigned overflow.
Even today, an implementation may define unsigned overflow.
That means that programmers don’t have to use trial and error to figure out how the compiler behaves and don’t have to _hope_ they found all the corner cases.
The parentheses are part of the operand and only needed for type names, to make them into cast expressions.