Моя программа работает отлично, но это было достигнуто методом проб и ошибок;Я пытаюсь понять, как все работает на самом деле из первых принципов.Буду благодарен за любые объяснения.Что эта функция связывает с шестнадцатеричными значениями?
for (i=0; i<5;i++)
{
cd=(int)(((numpairs[i])&0xf0)>>4);
if((numpairs[i]&0xf)>(0x0))
{
if(highest<cd)
{
//printf("%d\n",cd);
highest= cd;
cd=-1;
winner = i+1;
// printf(" highest: %d winner: %d\n", highest,winner);
}
if(highest==cd)
{
highest =0;
break;
//printf(" highest: %d winner: %d", highest,winner);
}
}
}
printf("\n---------------RESULT--------------\n");
if(highest>0)
{
printf("Winner is hand %d with a pair of %s\n", winner, values[highest]);
}
else
printf("*** DRAW ***\n");
// ========================Function 2=======================================
pairs findpairs(card *hand)
{
int i;
card cd1, cd2,cd3, card=0;
pairs numpairs=0;
for(i=1; i<4;i=i+2)
{
cd1=hand[i];
cd2=hand[i-1];
cd3=hand[i+1];
cd1= (cd1&0x3c)>>2;
cd2= (cd2&0x3c)>>2;
cd3= (cd3&0x3c)>>2;
if (cd1==cd2 || cd1==cd3)
{
numpairs++;
// printf("num pairs: %d\n", numpairs);
card=cd1;
}
}