Auberdin
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Приветствую всех. Разбираю очередной пример программирования и не могу догнать как именно работает эта программа: { bool p = false, q = false; int i, j; for (i = 0; i<2; i++) { for (j = 0; j <2; j++) { if (i == 0) p = true; if (i ==1) p = false; if (j == 0) q = true; if (j == 1) q = false; Console.WriteLine("p равно " + p + ", q равно " + q); if (!p | q) Console.WriteLine("Результат импликации " + p + " и " + q + " равен " + true); Console.WriteLine(); } } } Вывод программы: p равно True, q равно True Результат импликации True и True равен True p равно True, q равно False p равно False, q равно True Результат импликации False и True равен True p равно False, q равно False Результат импликации False и False равен True Здесь встроен цикл в цикле. Ну первый цикл я понял как проходит - i=0, j=0, соответственно значения p и q = true. Потом, судя по тому, что p=true, q = false, выполняется только "внутренний" цикл. В результате i=0, j=1. Потом идет третий цикл. Почему q становится true? Ведь j уже равен единице, т.е. q должен быть false. Когда j успел стать нулем? И как понять вот эту запись: if (!p | q)? Этот оператор срабатывает каждый цикл. Зачем он тогда нужен? |