• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

pytanie dot. c++

42 Warsaw Coding Academy
+2 głosów
752 wizyt
pytanie zadane 10 marca 2021 w C i C++ przez alekk Nowicjusz (140 p.)
#include <iostream>

using namespace std;

int main()
{
	int liczba;
	int suma = 0;
	
	cout << "Wpisz liczbe ";
	cin >> liczba;
	
	for (int i=1; i <= (liczba / 2); i++)

Dzień dobry,

zrobiłem zadanie z języka c++, które polega na tym, aby program sprawdzał czy podana liczba jest liczbą doskonałą. Nie będę tu wstawiał całego programu, bo wszystko się ładnie kompiluje i uruchamia, tylko mam jedno pytanie, a mianowicie: co oznacza to "i++" w ostatniej linijce? Sprawdzałem w internecie i znalazłem tylko różnice między "i++" a "++i" a nie o to mi chodzi. Prosiłbym tak BARDZO prostymi słowami, a nie jakieś słowa typu "przyrostkowy operator przyrostu" bo naprawdę robiłem to zadanie w 90% w oparciu o internet i nie wszystko rozumiem. Z góry dziękuję :)

7 odpowiedzi

+1 głos
odpowiedź 10 marca 2021 przez raxonpc Użytkownik (560 p.)
Wszyscy odpowiadający ominęli główny sens pytania - jaka jest różnica między i++ i ++i
++i po prostu zwiększa i o jeden, natomiast i++, najpierw dodaje 1, następnie zwraca kopię sprzed tego zwiększenia

np.

int i = 5;
foo(++i) - podajemy jako argument liczbe 6, efektem ubocznym jest zwiekszenie i o 1
foo(i++) - podajemy jako argument liczbe 5, efektem ubocznym jest zwiekszenie i o 1, ale dopiero po wykonaniu funkcji

Generalnie używaj ++i w takich sytuacjach jak u siebie, chyba, że lepszym wyjsciem jest i++
+1 głos
odpowiedź 10 marca 2021 przez VBService Ekspert (256,600 p.)
edycja 11 marca 2021 przez VBService

Czym się różni preinkrementacja od postinkrementacji

Preinkrementacja i postinkrementacja różnią się nie tylko położeniem znaków plusa, ale również priorytetem "podnoszenia" liczby o 1.

 

INKREMENTACJA OD STRONY CPU

Dwa słowa wyjaśnienia na temat zachowania przez procesor zanim skończę. Większość programistów zaleci Wam, aby dużo częściej jeśli nie zawsze, korzystać z preinkrementacji. Jest w tym pewny powód, a dotyczy on operacji procesora. Stosując postinkrementację procesor musi wpierw utworzyć kopię tej liczby przed inkrementacją w celu zachowania nienaruszonej liczby podczas wykonywania instrukcji przed dotarciem do punktu sekwencyjnego, który omówiłem w poprzednim akapicie. Po jego przekroczeniu, następuje zwiększenie o 1. Natomiast, preinkrementacja to sygnał dla CPU, że trzeba jedynie podnieść ten sam licznik do góry i od razu ma on być uwzględniany jeszcze przed punktem sekwencyjnym.

 

Właśnie dlatego w warunku pętli ma to kolosalne znaczenie czy dorzucimy plusiki na końcu czy na początku, ponieważ przy postinkrementacji następuje najpierw sprawdzenie warunku czy liczba nie jest większa czy mniejsza i dopiero wtedy jest zwiększenie, a gdy wykorzystywana jest preinkrementacja, pierwszeństwo ma zwiększenie licznika, a dopiero potem jest sprawdzenie warunku. Jest to jedna z najważniejszych różnic do zaobserwowania, ponieważ większość początkujących może z tego korzystać i nie wiedzieć jakie konsekwencje ma użycie jednego lub drugiego zapisu.


#include <iostream>

using namespace std;

int main()
{
    int k, i;
    cout << "Ta sama petla rozne przypadki.\n";
    
    i = 0;
    cout << "\ni=0  ++i\n";
    for (k=0; k<10; ++k)
        cout << ++i << " ";
        
    i = 0;
    cout << "\n\ni=0  i++\n";
    for (k=0; k<10; ++k)
        cout << i++ << " ";  
        
    i = 0;
    cout << "\n\ni=0  i=i+1\n";
    for (k=0; k<10; ++k)
        cout << (i=i+1) << " ";
        
    i = 0;
    cout << "\n\ni=0  i+=1\n";
    for (k=0; k<10; ++k)
        cout << (i+=1) << " "; 
        
    cout << "\n\nbonus ;-)";
    
    i = 0;
    cout << "\ni=0  i+=2 , i+=3 itd.\n";
    for (k=0; k<10; ++k)
        cout << (i+=2) << " ";    

    return 0;
}

0 głosów
odpowiedź 10 marca 2021 przez Psz3mo Mądrala (5,030 p.)
i++ - inaczej inkrementacja, czyli zwiększanie liczby i o 1 w górę.

i = 2

i++

i = 3
komentarz 10 marca 2021 przez alekk Nowicjusz (140 p.)
dziękuję bardzo
0 głosów
odpowiedź 10 marca 2021 przez Kabuuz Bywalec (2,820 p.)
To inkrementacja czyli wzrost wartości o 1. Zamiast pisać i++ można napisać i=i+1 lub i+=1.

i-- zmniejsza liczbę o jeden - dekrementacja
komentarz 10 marca 2021 przez alekk Nowicjusz (140 p.)
dziękuję bardzo
0 głosów
odpowiedź 10 marca 2021 przez TOM_CPP Pasjonat (22,640 p.)

co oznacza to "i++" w ostatniej linijce?

Zwiększenie zmiennej i o jeden, czyli dokładnie to samo co  i = i + 1;

komentarz 10 marca 2021 przez alekk Nowicjusz (140 p.)
dziękuję bardzo
0 głosów
odpowiedź 11 marca 2021 przez sisOOO Obywatel (1,430 p.)
i++ oznacza, że do zmiennej i zostaje dodaje 1

czyli
i = 0

i++

i=1
Jeżeli chciałbyś się przeżuć w przyszłości na inny język to np w pythonie masz
i += 1
I to jest to samo czyli po prostu to i dodajemy 1 (czyli zwiększamy wartość o 1)
Powodzenia w dalszej nauce :)
–1 głos
odpowiedź 10 marca 2021 przez 12332112332121 Dyskutant (8,270 p.)
i++ oznacza to samo co
i = i + 1
lub
i += 1
komentarz 10 marca 2021 przez alekk Nowicjusz (140 p.)
dziękuję bardzo

Podobne pytania

0 głosów
1 odpowiedź 228 wizyt
pytanie zadane 15 kwietnia 2021 w Rozwój zawodowy, nauka, praca przez Łukasz99 Początkujący (260 p.)
+1 głos
1 odpowiedź 198 wizyt
pytanie zadane 5 września 2024 w Systemy operacyjne, programy przez distracted Użytkownik (540 p.)
+1 głos
1 odpowiedź 333 wizyt

93,398 zapytań

142,390 odpowiedzi

322,580 komentarzy

62,759 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...