Чтобы лучше понять, почему программа выводит то, чего вы не ожидали, попробуйте найти причину, поиграв с printf и получив представление о каждом значении, которое вы хотите напечатать.
Например, здесь выможно попробовать следующее:
int main()
{
int x=4,y=0;
while(x>=0)
{
if(x==y)
break;
else
printf("x is: %d\n", x);
printf("y is: %d\n", y);
x--;
y++;
}
}
Надеюсь, это поможет