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

pytanie dot. c++

Object Storage Arubacloud
+2 głosów
427 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 (253,340 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,370 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 KumberTwo 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ź 181 wizyt
pytanie zadane 15 kwietnia 2021 w Rozwój zawodowy, nauka, praca przez Łukasz99 Początkujący (260 p.)
+1 głos
1 odpowiedź 125 wizyt
0 głosów
0 odpowiedzi 159 wizyt
pytanie zadane 6 listopada 2020 w Sprzęt komputerowy przez Jan Matejkaa Nowicjusz (120 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...