A question about C interop and enums

As far as I am aware, enum cases in C are integers (at least prior to C23). Yet, when writing my experimental wrapping for Raylib, I have noticed that that the rawValue of enum type is UInt32, when converted to string is UInt32 (instead of Int32).

What is the reason for this behavior?
Is it an error?
Is it implementation defined?

Thanks.

This has been reported as a bug: [SR-3999] Import of C enum should have type CInt · Issue #46584 · swiftlang/swift · GitHub)

... The RawValue is based on the enumeration members; enums with strictly non-negative members are imported as CUnsignedInt (I assume, I see UInt32 on macOS), while those that have negative members are imported as CInt (Int32 on macOS).