You declared i as an unsigned variable. The fact that you used a signed literal or any signed expression in the initialization is lost. When changing the size, the LRM says
The signedness shall pass through unchanged, i.e., the signedness of the result shall be the self-determined signedness of the expression inside the cast.