Что означает это выражение? (Функция SetConsoleTextAttribute в C)

Я нахожусь в середине создания небольшой игры на базе консоли для нашего задания по программированию на языке Си и решил сделать ее более презентабельной и уникальной, добавив цвета текста и текстовые фоны.

Пока я искал решение, я нашел эту удобную функцию, которая сделает то, что я хотел для своего проекта, но проблема в том, что есть одна часть, которую я не понимаю:

WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);

Где, BackC и ForgC даны целые числа, а тип данных WORD является просто типизацией для беззнакового короткого int. В частности, я не понимаю часть ((BackC & 0x0F) << 4) + (ForgC & 0x0F). Может ли кто-нибудь помочь мне с этим? Я знаю, что могу просто использовать функцию, но я действительно хочу знать, как она работает...Спасибо!

Вот полный исходный код (colorExample.c)

#include <windows.h>
#include <stdio.h>
void SetColorAndBackground(int ForgC, int BackC);
int main()
{
    SetColorAndBackground(10,1);   //color value range 0 up-to 256
    printf("what is text background color \n");
    SetColorAndBackground(11,1);
    printf("how about this?");
    getch();
    return 0;
}
void SetColorAndBackground(int ForgC, int BackC)
{
     WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
     return;
}
5
задан Raven 24 September 2011 в 14:27
поделиться