The operands of %
undergo the usual arithmetic conversions to bring them to a common type, before the division is performed. If the operands were int
and size_t
, then the int
is converted to size_t
.
If size_t
is 32-bit then -4
would become 4294967292
and then the result of the expression is 4294957292 % 7
which is actually 0
.
If size_t
is 64-bit then -4
would become 18,446,744,073,709,551,612 and the result of this % 7
is 5
which you saw.
So actually we can tell from this output that your system has 64-bit size_t.