0 / 0 / 0
Регистрация: 27.01.2017
Сообщений: 52
1

C6281: Неверный порядок операций: операторы отношений имеют более высокий приоритет, чем битовые операторы

13.11.2019, 19:34. Показов 3103. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу змейку(sfml). Мне понадобилось создать while цикл, в котором я делаю две проверки, проверяю равенство двух позиций, и через оператор & проверяю равняется ли bool переменная значению true. При этом равенство подчёркивается зелёным цветом и при наведении выводит надпись из заголовка темы.
Код PlayerSnake.cpp:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "PlayerSnake.h"
#include <ctime>
#include <iostream>
PlayerSnake::PlayerSnake(GradeCell** cells)
{
    this->cells = cells;
}
void PlayerSnake::Spawn(int originSegmentsCount, int cellsCountX, int cellsCountY, sf::Color snakeColor, float cellSizeX, float cellSizeY)
{
    std::srand(time(NULL));
    this->segmentsCount = originSegmentsCount;
    this->cellsCountX = cellsCountX;
    this->cellsCountY = cellsCountY;
    this->snakeColor = snakeColor;
    this->cellSizeX = cellSizeX;
    this->cellSizeY = cellSizeY;
    segments = new Segment[segmentsCount];
    spawnFirstSegment();
}
 
 
void PlayerSnake::Move()
{
 
}
 
void PlayerSnake::spawnFirstSegment()
{
    segments[0].segment = sf::RectangleShape(sf::Vector2f(cellSizeX, cellSizeY));
    segments[0].segment.setPosition((std::rand() % cellsCountX) * cellSizeX, (std::rand() % cellsCountY) * cellSizeY);      // Спавн нулевого сегмента(головы)
    //segments[0].segment.setFillColor(snakeColor);
    segments[0].segment.setFillColor(sf::Color(255, 0, 0));
    spawnSegments();
}
 
void PlayerSnake::spawnSegments()
{
    int segmentNeighbour;
    for(int x = 0; x < cellsCountX; x++)
        for(int y = 0; y < cellsCountY; y++)
            for (int i = 1; i < segmentsCount; i++)
            {
 
                for(int nado = 0; nado < segmentsCount; nado++)
                    segments[nado].setCellFull(cells, cellsCountX, cellsCountY, cellSizeX, cellSizeY);
 
 
                segmentNeighbour = rand() % 4;
                while ( segments[i].CheckingFullCells(segmentNeighbour, cellSizeX, cellSizeY) == cells[x][y].cell.getPosition() & cells[x][y].isFull == true)
                {
                        std::cout << cells[x][y].isFull << " (" << x << ")" << " (" << y << ")" << " (" << i << ")" << " before" << std::endl;
                        segmentNeighbour = rand() % 4;
                }
                    segments[i].segment = sf::RectangleShape(sf::Vector2f(cellSizeX, cellSizeY));
                    segments[i].segment.setPosition(segments[i - 1].segment.getPosition());
                    segments[i].segment.setPosition(segments[i].CheckingFullCells(segmentNeighbour, cellSizeX, cellSizeY)); // Позиция сдвинутая в сторону
 
                    segments[i].segment.setFillColor(sf::Color(snakeColor));
 
            }
 
}
void PlayerSnake::Update() const
{
    for (int i = 0; i < segmentsCount; i++)
    {
        segments[i].setCellFull(cells, cellsCountX, cellsCountY, cellSizeX, cellSizeY);
        for (int x = 0; x < cellsCountX; x++)
            for (int y = 0; y < cellsCountY; y++)
                if (cells[x][y].isFull == true) 
                {
                    //std::cout << cells[x][y].isFull << " (" << x << ")" << " (" << y << ")" << " (" << i << ")" << "==========================================" << std::endl;
                }
 
    }
 
 
}
 
void PlayerSnake::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
    states.transform *= getTransform();
    Update();
    for (int segmentsC = 0; segmentsC < segmentsCount; segmentsC++) 
    {
        target.draw(segments[segmentsC].segment);
    }
 
 
}
P.S Я начал писать эту тему, забыв о том что проверка true то работает, проблема в чём-то другом(весь день над этой хернёй страдаю. Буквально весь день, голова уже не работает), но это не означает что мы мне не можете ответить. Мне как минимум интересно, плюс кому то другому может пригодится.
Программа запускается, это не ошибка, просто напишите, что это значит, и влияет ли это как то на код(в и интернете нигде не нашёл)
Так же могу приложить скрин:
Миниатюры
C6281: Неверный порядок операций: операторы отношений имеют более высокий приоритет, чем битовые операторы  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2019, 19:34
Ответы с готовыми решениями:

Операторы отношений и логические операторы
Всем добрый день. Очередной день изучения Г.Шилда С++ базовый курс, дошел до Операторов отношений,...

Операторы отношений и логические операторы
изучаю C++ по Шилдту, и частенько встречаются не рабочии коды и приходится доделывать под себя, но...

С++.Операторы в С++: условные операторы, операторы break и continue
Выяснить, пересекаются ли параболы у=аx2+bx+с и у=dx2+ex + f. При положительном ответе найти точки...

Битовые операторы
Доброго времени суток, уважаемые форумчане. Возник такой вопрос, а какой формулой можно отобразить...

1
6578 / 4563 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
14.11.2019, 08:55 2
Цитата Сообщение от Кот1223432234 Посмотреть сообщение
Программа запускается, это не ошибка, просто напишите, что это значит, и влияет ли это как то на код(в и интернете нигде не нашёл)
Здесь нужно логическое И, а не битовое - cellSizeY) == cells[x][y].cell.getPosition() && cells[x][y].isFull == true

С true тогда можно не сравнивать
0
14.11.2019, 08:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2019, 08:55
Помогаю со студенческими работами здесь

Битовые операторы
Не могу понять как правильно считать 4 числа которые я записал в битовый массив можете помочь...

Операторы отношений (сравнения)
Добрый день. Можно ли (использовать) записывать операторы сравнения с несколькими переменными в...

Глючат битовые операторы.
Когда пользуюсь битовыми операторами, программа выдает хз какие значения: 18|89 = 91 ...

Лабораторная работа(арифметическое выражение,операторы ввода и вывода,структурные операторы)
1)написать программу,которая, при вводе номера (7) дня недели,выводит соответствующий ему день...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru