Instrukcje warunkowe i operatory w C#

0

Witam, chciałbym wiedzieć dlaczego przy użyciu operatora || (lub) przy uruchomieniu wypisuje to samo co przy użyciu operatora &&.

    class Program
    {
        static void Main(string[] args)
        {
            for (int i = -100; i < 101; i++)
            {
                if (i % 4 != 0 || i % 8 == 0 || i % 10 == 0) continue;
                Console.Write("{0}, ", i);
            }
            Console.WriteLine("\n\n");
            for (int i = -100; i < 101; i++)
            {
                if (i % 4 == 0 && i % 8 != 0 && i % 10 != 0) Console.Write("{0}, ", i);
            }
            Console.ReadKey();
        } 

Z tego co rozumiem, jeśli użyję operatora || to i wejdzie w ifa jeśli dowolny warunek będzie prawdą, no ale już dla i % 4 != 0 nie jest prawdą a wypisuje liczby tj. 4, 12, 28 itp, nie wypisując właśnie tych podzielnych przez 8.

Jak ustawiłem takie warunki jak w drugim ifie, to w pierwszym ifie nie wypisywało nic :( Mógłby ktoś to wytłumaczyć?

0
o ale już dla i % 4 != 0

No ale co jest i w tym wypadku że ma nie być prawdą?

Nie wypisuje liczb podzielnych przez 8 bo i % 8 == 0 ten warunek powoduje wywołanie continue
Poczytaj co to jest Debugger.

0
Maximinus napisał(a):

ale już dla i % 4 != 0 nie jest prawdą a wypisuje liczby tj. 4, 12, 28 itp, nie wypisując właśnie tych podzielnych przez 8.

Dla 4,12,28 nie jest prawdą żaden warunek w pierwszym ifie, więc nie wykona się continue tylko liczba zostanie wypisana.

Dlaczego dziwisz się, że nie wypisuje podzielnych przez 8? Przecież napisałeś, że jeśli jakaś liczba jest podzielna przez 8(i%8==0) to program ma przejść do kolejnego obiegu pętli.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0