Изучаю язык, не могу понять, где ошибка

 
Изучаю язык, и иногда не догоняю, где ошибка.
Буду здесь выкладывать глупые вопросы.

вот сейчас ошибка в операторе if else, только не могу понять, где


//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{


/* т.к. переключатель работает только с целочисленными типами переменных, то
каждому значению переменной у присваиваем своё значение переменной х.
*/


string y="B";                    // инициализируем и присваиваем значение строковой переменной у
int x;                               //инициализируем переменную х

if (y="A") x=1;                   //если строковая переменная равна А, то х равно 1.
else (y="B") x=2;               //если строковая переменная равна B, то х равно 2.
else (y="C") x=3;               //если строковая переменная равна C, то х равно 3.
else x=4;                           //иначе х равно 4.

/*
описываю переключатель:

если х равно 1, то вывести сообщение "Константа у содержит букву А"
если х равно 2, то вывести сообщение "Константа у содержит букву В"
если х равно 3, то вывести сообщение "Константа у содержит букву С"
если х равно 4, то вывести сообщение "Константа у не содержит буквы А,В или С"
*/

switch (x)
{
case 1:
MessageBox ("Constant y include letter A");
break;

case 2:
MessageBox ("Constant include letter B");
break;

case 3:
MessageBox ("Constant include letter C");
break;

default :
MessageBox ("Constant not include letter A,B or C");
}
 
if (y == "A") x=1;                   //если строковая переменная равна А, то х равно 1.
else if(y == "B") x=2;               //если строковая переменная равна B, то х равно 2.
else if(y == "C") x=3;               //если строковая переменная равна C, то х равно 3.
else x=4;                           //иначе х равно 4.
 
Вот так попробуй:
int start()
{

/* т.к. переключатель работает только с целочисленными типами переменных, то
каждому значению переменной у присваиваем своё значение переменной х.
*/

string y="B"; // инициализируем и присваиваем значение строковой переменной у
int x; //инициализируем переменную х
if (y=="A") x=1; //если строковая переменная равна А, то х равно 1.
else if(y=="B") x=2; //если строковая переменная равна B, то х равно 2.
else if (y=="C") x=3; //если строковая переменная равна C, то х равно 3.
else x=4; //иначе х равно 4.
/*
описываю переключатель:
если х равно 1, то вывести сообщение "Константа у содержит букву А"
если х равно 2, то вывести сообщение "Константа у содержит букву В"
если х равно 3, то вывести сообщение "Константа у содержит букву С"
если х равно 4, то вывести сообщение "Константа у не содержит буквы А,В или С"
*/
switch (x)
{
case 1:
MessageBox ("Constant y include letter A");
break;
case 2:
MessageBox ("Constant include letter B");
break;
case 3:
MessageBox ("Constant include letter C");
break;
default :
MessageBox ("Constant not include letter A,B or C");
}
}
Упс. Опередил.
 
Большое спасибо за участие.
Понял, где собака порылась:
во первых, вместо оператора присвоения (один знак равенства) нужно ставить оператор сравнения (два знака равенства),
во вторых, после else ещё раз оператор if.

Я , кстати, пробовал ставить два знака равенства, но не работало. Не мог понять, почему.
Хочется во всём самому разобраться, смотришь вот так в код, вроде всё правильно, но не работает. Без подсказки не обойтись.
Ещё раз спасибо.
Причина обращения: