Это потому, что вы используете подписанный символ и предположительно целое число.
Символ переполняется, когда достигает 130 (становится 130 - 256), но целое число не переполняется. 130 - 256! = 130.
Простое изменение исправляет это так, что результат всегда верен - просто добавьте unsigned
в первой строке:
unsigned char x;
for (int i=0;i<256;i+=10)
{
x=i;
if (x==i)
printf("%d true\n",i);
else
printf("%d false\n",i);
}