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

pytanie dot. c++

VPS Starter Arubacloud
+2 głosów
418 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 (251,210 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ź 176 wizyt
pytanie zadane 15 kwietnia 2021 w Rozwój zawodowy, nauka, praca przez Łukasz99 Początkujący (260 p.)
0 głosów
0 odpowiedzi 153 wizyt
pytanie zadane 6 listopada 2020 w Sprzęt komputerowy przez Jan Matejkaa Nowicjusz (120 p.)
0 głosów
1 odpowiedź 400 wizyt
pytanie zadane 1 lutego 2020 w Python przez tonn204 Mądrala (7,440 p.)

92,454 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...