It seems that you outputted the expression strlen(s)-strlen(x)
using format specifier %u
for example like this
printf( "%u\n", ( unsigned int )( strlen(s)-strlen(x)));
printf( "%u\n", c );
In this case the output is indeed is equal to
4294967294
4294967295
However if you output these expressions using casting to the type size_t
and the format specifier %zu
you will get
printf( "%zu\n", strlen(s)-strlen(x));
printf( "%zu\n", ( size_t ) c );
and
18446744073709551614
4294967295
So the value of expression strlen(s)-strlen(x)
is greater than the value of the variable c
casted to the type size_t
.
You could get the expected by you result if sizeof( size_t )
would be equal to sizeof( unsigned int )
.