Dzień dobry.
Sprawa dotyczy poniższej pętli. Po skompilowaniu otrzymujemy komunikaty:
Wykonano pętle dla j=4
Wykonano pętle dla j=10
Siedzę sobie nad tym już od dłuższego czasu, rozpisuje za pomocą kartki i długopisu, ale po prostu nie wiem dlaczego wartości 4 i 10 stanowią to co sie wypisze na ekranie.
Zachodzi inkrementacja która mnie trochę wyprowadza z równowagi.
Skoro zmienną j inicjalizujemy dzięki "- 2" to jak rozumiem inkrementacja "++j" zmienia wartość na -1, warunek -1<10 jest spełniony więc przechodzimy do klamerek.
W klamerkach mamy kolejna inkrementacje przy której mam wątpliwości.
Jak rozumiem mamy do czynienia z wyrażeniem więc wartość j jest odczytywana przed inkrementacją więc interesuje nas reszta z dzielenia -1 przez 3 a nie 0 przez 3.
Natomiast owa inkrementacja występująca przy if uwidacznia się w momencie kolejnego obiegu pętli co - według moich refleksji, których już pewny nie jestem - daje nam w kolejnym obiegu "while (1 < 10)".
Mam nadzieje, że jasno przedstawiłem zagadnienie.
Bedę wdzięczny za kilka słów mogących naprowadzić na odpowiedni tok rozumowania.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
int j = -2;
while (++j < 10)
{
if (j++ % 3 != 0)
continue;
Console.WriteLine("Wykonano pętle dla j={0}", j);
}
Console.ReadLine();
}
}
}