В настоящее время у меня есть программа, которая переходит к вводу, которая изначально устанавливает значение b в TRUE (i.e b = 1). Затем вызывается оператор switch, устанавливая значение c в TRUE (i.e c = 1). Следующий вход от пользователя устанавливает значение b в FALSE, но по какой-либо причине оператор first if никогда не получается, так как строка "mvprintw(22,24,"It has reached it");"
никогда не печатается на моем экране, несмотря на то, что значение b является ложным (b = 1), а значение c теперь истинно (c = 1).Если оператор в случаях не работает/достигнут
Я пытался использовать вложенные if вместо случаев, но это продолжает усложнять ситуацию и, откровенно говоря, не работает. Любой вклад в этот вопрос был бы очень признателен!
int moveC(int y, int x, int b, int i)
{ //first input from user, b is True, so first case occurs
//second input from user, b is false, so second case occurs, however, the if first if statement is never reached, but the second one is
int c = FALSE;
switch(b)
{
case TRUE:
c = TRUE; //this part is first reached from initall user input
refresh();
mvprintw(26,26,"value of c is... %d",c);
break;
case FALSE:
if(c == 1) //this part is never reached, even though the second user input is (b = 0 i.e false, and c = 1, i.e true)
{
mvprintw(22,24,"It has reached it");
mvprintw(y,x+7,"^");
refresh();
break;
}
else if(c == 0) //this if statement is always used even if c is not zero
{
mvprintw(y,x,"^");
refresh();
break;
}
Пожалуйста, пост полный compileable пример. – AndyG
Как правило, плохой практикой в C является представление ложных логических значений точных значений. «TRUE» отличен от нуля; «FALSE» равно нулю в C, но значение вашего переключателя для «TRUE» - это только то, что (я полагаю) вы определили где-то этим запутанным определением макроса. Используйте перечисления, используйте флаги, используйте константы, но не используйте TRUE и FALSE в C. – mpez0
@ mpez0 Я думаю, что то же самое, просто используйте 'if (booleanValue! = 0)' и 'if (booleanValue == 0)'. И использование 'FALSE' и' TRUE' в 'switch' бесполезно. –