Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
QWAN
57 / 56 / 1
Регистрация: 02.09.2008
Сообщений: 181
#1

Обьясните пожайлуста как и что делает данный оператор в этом выражении fState [x][y] ^= 1;. Неполный код привожу ниже. - C++

15.10.2008, 10:27. Просмотров 980. Ответов 4
Метки нет (Все метки)

Вот код программы из книжки Ч. Петзолд (Програмирование для Windows® 95)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#define DIVISIONS 5
...
...
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static BOOL fState[DIVISIONS][DIVISIONS];
static int cxBlock, cyBlock;
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
int x, y;
 
switch(iMsg)
{
case WM_SIZE :cxBlock = LOWORD(lParam) / DIVISIONS;
cyBlock = HIWORD(lParam) / DIVISIONS;
return 0;
case WM_LBUTTONDOWN :x = LOWORD(lParam) / cxBlock;
y = HIWORD(lParam) / cyBlock;
if(x < DIVISIONS && y < DIVISIONS)
{fState [x][y] ^= 1;
rect.left = x * cxBlock;
rect.top = y * cyBlock;
rect.right =(x + 1) * cxBlock;
rect.bottom =(y + 1) * cyBlock;
InvalidateRect(hwnd, &rect, FALSE);
}
return 0;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2008, 10:27     Обьясните пожайлуста как и что делает данный оператор в этом выражении fState [x][y] ^= 1;. Неполный код привожу ниже.
Посмотрите здесь:

C++ Что делает данный код и зачем такое кому-нибудь может понадобиться?
обьясните что именно делает функция this C++
C++ Что делает оператор ! в выражении инструкции?
C++ Обьясните, что означает данный элемент t?
C++ Обьясните что делает программа
Обьясните пожалуйста что делает эта программа C++
C++ Скажите, что делает данный код?
C++ Обьясните пожалуйста, что делает эта программа?
Что делает данный цикл? C++
обьясните пожалуйста что делает этот кусок кода с++ C++
Что делает данный код? C++
Что делает данный код? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alirp
55 / 50 / 1
Регистрация: 04.05.2008
Сообщений: 273
15.10.2008, 14:17     Обьясните пожайлуста как и что делает данный оператор в этом выражении fState [x][y] ^= 1;. Неполный код привожу ниже. #2
сам оператор ^ означает поразрядное исключающее ИЛИ битовых представлений значений, а сама сторочка fState [x][y] ^= 1; по другому ее можно записать так:
fState [x][y] = fState [x][y] ^ 1;
QWAN
57 / 56 / 1
Регистрация: 02.09.2008
Сообщений: 181
15.10.2008, 14:23  [ТС]     Обьясните пожайлуста как и что делает данный оператор в этом выражении fState [x][y] ^= 1;. Неполный код привожу ниже. #3
Как оператор ^ работает в данном массиве? Напримере эсли можно
fState [x][y] =fState [0][1] ^ 1 что будет происходить?
Alirp
55 / 50 / 1
Регистрация: 04.05.2008
Сообщений: 273
15.10.2008, 15:08     Обьясните пожайлуста как и что делает данный оператор в этом выражении fState [x][y] ^= 1;. Неполный код привожу ниже. #4
Значение элементов массива могут быть только TRUE или FALSE (0 или 1), после операции fState [x][y] ^= 1, элементу массива будет присвоено значение противоположное изначальному (инвертированное).
То есть если fState [x][y] = 1, по после операции исключающее ИЛИ, fState [x][y] будет равно нулю и наоборот, если fState [x][y]=0, то после операнции будет равно еденице.
1^1=0;
0^1=1;
QWAN
57 / 56 / 1
Регистрация: 02.09.2008
Сообщений: 181
16.10.2008, 18:02  [ТС]     Обьясните пожайлуста как и что делает данный оператор в этом выражении fState [x][y] ^= 1;. Неполный код привожу ниже. #5
Alirp,спасибо огромное. Теперь я разобрался.
Yandex
Объявления
16.10.2008, 18:02     Обьясните пожайлуста как и что делает данный оператор в этом выражении fState [x][y] ^= 1;. Неполный код привожу ниже.
Ответ Создать тему
Опции темы

Текущее время: 04:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru