#include <stdio.h>

int main ( void )
{
unsigned char a = 5;
unsigned char b;

b = ~a;

printf ( "%d\n", b );

return 0;
}

は250なのに、unsigned char a = 5; unsigned char b; を unsigned int a = 5; unsigned int b;
にすると-6になります。aもbも符合なし整数なのに。なんでですか。