2015-12-13 2 views
0

В настоящее время условия моей схемы if не соблюдаются. независимо от того, что я вводил для x, инструкции внутри цикла for все еще выполняются. Идея здесь заключается в том, что пользователь может вводить данные, и если они хотят изменить данные до следующего шага, они могут. В конце цикла while они должны иметь возможность вернуться к началу или выйти из цикла while. Сначала я попытался сделать цикл while внутри цикла while, но это не дало результата вообще.если условия игнорируются

int _tmain(int argc, _TCHAR* argv[]) { 
    dataSet myData; 
    int a, b, c, d, x, y; 
    cout << "2 to start, 1 to fail." << endl; 
    cin >> y >> x; 
    while (y == 2) { 
     if (x == 1); 
     { 
      cout << "please enter 4 numbers: " << endl; 
      cin >> a >> b >> c >> d; 
      int start[4] = { a, b, c, d }; 
      myData.addElements(start); 
      x = myData.moveForward; 
     } 
     myData.beginProcess(); 
     y = myData.moveForward; 
     x = myData.moveForward; 
    } 

    system("pause"); 
    return 0; 
} 
+0

Ik, что петля назад в начале, если разве собирается цикл , и я над этим работаю. это осталось от того, когда я пытался сделать цикл while. – forresto

+0

Все это можно было бы легко обнаружить, если вы использовали отладчик. Отладчик - лучший друг программиста! Познакомиться с этим хорошо – Kam

+0

полезно знать, все еще новичок, и пропустил точку с запятой. XD – forresto

ответ

2

Ваше if заявление ничего не делает, потому что:

if (x == 1); 
      ^~~~ empty statement! 

Я предлагаю свой поднять уровень предупреждения, по крайней мере /W3, то компилятор предупреждал вас:

warning C4390: ';' : empty controlled statement found; is this the intent? 
+0

woops даже не видели точку с запятой XD – forresto

+0

Полезно знать, что мне нужно будет исследовать, что – forresto

0

Не должно быть; после того, если заявление

+0

woops typo я сейчас чувствую себя глупо. ставка, поэтому мой оператор while не работал ни XD – forresto

+0

yep. пока работает отлично, теперь woops XD – forresto

0
if (x == 1); 

if (x == 1) выполнит следующую инструкцию. Это всего лишь ;, инструкция «void».

После этого if блок закончился, и продолжает executin следующий кода (вложенный блок вы думаете, должен был быть выполнен только в том случае x == 1)

+0

woops пропустили точку с запятой, моя плохая XD-ненависть typos XD – forresto

Смежные вопросы