if (i%2==0) (?) Wytłumaczenie znaczenia

if (i%2==0) (?) Wytłumaczenie znaczenia
0

hejka,
ogarniam już temat całkiem nieźle włącznie z pętlami ale jedna rzecz mnie gnębi i nie wiem jak to zinterpretować/poszukać..

Napisałem prosty program:

Kopiuj
#include <stdio.h>
int main()
{
int i;
for (i = 1 ; i <= 50 ; ++i) {
     if (i%3==0) continue ;
     printf ("%d\n", i);
  }
return 0;
}

Czyli program od 1 do 50, który nie uwzględnia liczb podzielnych przez 3. Chodzi mi właśnie o te: if (i%3==0) continue;
Jak to się nazywa? wiem że jest tam operator przypisania == ale.. to całe wyrażenie? Jak ja mam to googlować żeby znaleźć o tym więcej? Chciałbym zrozumieć metodykę wykonywania tego "czegoś".

edytowany 1x, ostatnio: kq
SE
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:318
2

Jak to się nazywa? wiem że jest tam operator przypisania == ale.. to całe wyrażenie?

Po pierwsze, nie przypisania (=), lecz porównania (==).
Po drugie - całe wyrażenie czyli " if (i%3==0) continue ;"? Jeśli tak, to na polski:
Jeżeli (if) reszta z dzielenia (%) liczby spod zmiennej "i" przez 3 jest równa (==) 0, pomiń obecny krok pętli i przejdź do następnego (continue).

Prawdę mówiąc nie kojarzy mi się by to miało jakąś specjalną nazwę. Wyłączając porównanie reszty z dzielenia do jakiejś wartości i natychmiastowe przejście do następnego kroku pętli.

Tenonymous
  • Rejestracja:prawie 8 lat
  • Ostatnio:23 dni
  • Postów:425
2
Brunatny Kot napisał(a):

hejka,
ogarniam już temat całkiem nieźle włącznie z pętlami ale jedna rzecz mnie gnębi i nie wiem jak to zinterpretować/poszukać..

no to faktycznie nieźle XD

if (i%3==0) continue;
oznacza, że jeżeli reszta z dzielenia zmiennej i przez 3 jest rowna 0, czyli nie ma reszty[w ogole == to nie przypisanie a porównanie] to pętla przerywa daną iteracje i przechodzi do kolejnej, czyli jeżeli masz i = 3, to w if(3%3 == 0) jest warunkiem prawdziwym, więc instrukcja continue informuję program, że ma on nie wykonywać kolejnych instrukcji w pętli tylko przejść do następnej iteracji zgodnie z trzecim argumentem

XE
  • Rejestracja:ponad 9 lat
  • Ostatnio:8 miesięcy
  • Postów:9
0

% jest operatorem dzielenia modulo. Zwraca resztę z dzielenia dwóch liczb całkowitych. Dla podzielnych przez 3 reszta z dzielenia przez 3 będzie równa 0 i warunek i%3==0 będzie prawdziwy.

0

no to dzięki chłopaki XD

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.