Due to promotion rules (types < int, even if unsigned, get promoted to int when arithmetic is performed on them), this is a potential spot for undefined behavior.