stigmt
@stigmt
Учусь

Возможно ли применить такое условие?

имею код:
#include <iostream>
#include <conio.h>



using namespace std;
int arr[9];
bool win;

bool proverka()
{
	
	
	if (arr[0] == 2 && arr[1] == 2 && arr[2]==2)
		{
			return true;
			win = true;
		}
		else
		{
			return false;
			win = false;
		}

	
	
}
void output()
{
	for (int i = 0; i < 9; i++)//вывод поля
	{
		
		cout << " | " << arr[i] << " | ";
		if ((i + 1) % 3 == 0)
		{
			
			cout << endl;
		}
	}
}




int main()
{

	setlocale(LC_ALL, "Russian");
	arr[0] = 2;
	arr[1] = 2;
	arr[2] = 2;
	output();
	proverka();
	if (proverka())
	{
		cout << "RAVNO";
	}
	else
	{
		cout << "NE RAVNO";
	}

	_getch();
	return 0;

}

Обратите внимание на условие в функции proverka(), все работает правильно только в таком виде, но мне нужно что бы условие было вида:
if (arr[0] == arr[1] == arr[2])
в таком случае выводится результат "не равно"
Но написав вот так:
if (a == b == с)
заранее инициализировав переменные типа int a,b,c и присвоив им всем значение единицы, то все ок и выводится сообщение о верном равенстве.
Вопрос: почему сравнение значений массива по индексу работает не так, как с обычными переменными?
и как мне добиться нужного результата?
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
if (arr[0] == arr[1] == arr[2])

Результат выполнения операции == в С++ -- это bool, а bool конвертируется в int.
Запись в скобках эквивалентна (a[0] == a[1]) == a[2] и сравнивает a[2] с результатом сравнения a[0] и a[1] (0 если они не равны, 1 если равны). Т.е. 1 == 1 == 1 -- это истина, поскольку (1 == 1) -- истина, истина сконвертированная в int -- это 1, а 1 == 1 -- это истина.

почему сравнение значений массива по индексу работает не так, как с обычными переменными

Точно так же оно работает.

как мне добиться нужного результата?

if (arr[0] == arr[1] && arr[1] == arr[2])
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Потому что непонятно, откуда вы взяли вообще такой синтаксис.
Попробуйте как-то так: if (arr[0] == arr[1] && arr[1] == arr[2])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы