В C++, выражение внутри скобок рассматривается как выражение, а не как ошибка. Если выражение в скобках приводит к логическому значению (true или false), то оно будет интерпретировано как условие.
Для проверки равенства значений переменных `a` и `b` можно использовать оператор сравнения `==`.
Примеры:
```cpp
// Не работает
if (a = b) {
cout << "a равно b" << endl;
}
// Работает
if (a == b) {
cout << "a равно b" << endl;
}
```
В первом примере кода не работает из-за использования оператора присваивания `=` вместо оператора сравнения `==`. В результате переменной `a` присваивается значение переменной `b`, что возвращает true (так как присваивание возвращает само значение переменной после присваивания), поэтому условие `if` будет выполнено и строка "a равно b" будет выведена в консоль.
Во втором примере корректно используется оператор сравнения `==`, который проверяет равенство значений переменных `a` и `b`, и выводит соответствующее сообщение в случае успеха.