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

C++ dlaczego bakterie=bakterie*2 a godzina++?

Object Storage Arubacloud
+3 głosów
1,293 wizyt
pytanie zadane 8 kwietnia 2015 w C i C++ przez hakiros54 Obywatel (1,160 p.)
witam, mam pytanie dlaczego tutaj

#include <iostream>
#include <unistd.h>
using namespace std;
int bakterie=1; int godzina=0;
int main()
{
   cout<<"jesli w ciągu 1 godziny ilość bakteri wzrasta dwukrotnie to w ciągu ilu godzin populacja przekroczy 1 miliard?"<<endl;

   sleep(5);
    while(bakterie<=1000000000)
   { bakterie=bakterie*2;
     godzina++;
    cout<<"godzina: "<<godzina;
    cout<<" ilość bakterii: "<<bakterie<<endl;}
    return 0;
}

a dokładniej w

{ bakterie=bakterie*2;
     godzina++;

trzeba raz pisać bakterie=bakterie*2; a raz godzina++;? dlaczego w obu przypadkach nie trzeba pisać bakterie=bakterie*2; godzina=godzina++; albo bakterie*2; godzina++;? dopiero zaczynam w c++ i nie rozumie dlaczego to nie jest takie same

6 odpowiedzi

+4 głosów
odpowiedź 8 kwietnia 2015 przez krecik1334 Maniak (58,390 p.)

Taka składnia, godzina++ oznacza (nie dokładnie ale na twoim poziomie tak) zapis:

godzina += 1;
//LUB
godzina = godzina + 1;

Zapis bakterie = bakterie*2 można uprościć do:

bakterie*=2;

Inaczej nie da się tego zrobić, taka składnia języka C++, tego nie zmienisz.

+3 głosów
odpowiedź 8 kwietnia 2015 przez Jacek Obywatel (1,200 p.)
W przypadku godziny występuje postinkrementacja, która pozwala na uproszczony zapis. Dzięki temu nie musisz pisać "godzina=godzina+1" lub "godzina+=1", a w każdej iteracji (w każdym powtórzeniu pętli) do zmiennej "godzina" zostanie dodana wartość 1. Dość proste.

http://pl.wikipedia.org/wiki/Inkrementacja

Jeśli jeszcze nie trafiłeś na ten kurs: https://www.youtube.com/watch?v=Kc98tH59A_U
komentarz 8 kwietnia 2015 przez hakiros54 Obywatel (1,160 p.)
z tego kursu odesłano mnie tutaj, a to zadanie było w 3 części
+2 głosów
odpowiedź 8 kwietnia 2015 przez Valtuil Pasjonat (22,460 p.)
Bakterie=bakterie*2 - tą linijką podwajasz bakterie i ona niema krótszego zapisu

godzina++ - to skrócony zapis: godzina=godzina+1
komentarz 8 kwietnia 2015 przez hakiros54 Obywatel (1,160 p.)
wiem co one robią ale nie wiem dlaczego trzeba pisać w jednym trzeba pisać cos_tam= a w drugim nie, tylko pisząc cos_tam++ lub cos_tam-- nie trzeba pisac tego cos_tam=?
komentarz 8 kwietnia 2015 przez Valtuil Pasjonat (22,460 p.)
Zawsze wybiera sie najkrotszy zapis jaki jest mozliwy.
+1 głos
odpowiedź 8 kwietnia 2015 przez marqos12 Obywatel (1,840 p.)
godzina++ to przykąłd inkrementacji, polecam się zapoznać ponieważ jest to przydatne głównie przy pętlach
0 głosów
odpowiedź 8 kwietnia 2015 przez Iras Obywatel (1,800 p.)
Czy zrobisz to bakterie=bakterie*2 czy bakterie*=2 to jest to samo a godzina zapisana tak godzina++ czy tak godzina=godzina + 1 to także to samo poprostu w c++ można to zapisać krócej bo jak to mówią dobry programista to leniwy programista :)
0 głosów
odpowiedź 8 kwietnia 2015 przez szmq Pasjonat (22,770 p.)

Widzę, że już wytłumaczyli tak mniej więcej :) Teraz postaram się ogarnać jaka jest różnica godzina++ a ++godzina. Operator preiknrementacji (++godzina) zwraca wartość już zwiększoną o 1. Natomiast operator postinkrementacji (godzina++) zwraca wartość zmiennej przed procesem inkrementacji. Po prostu Operatory "pre-" wykonują operacje inkrementacji lub dekremantacji przed innymi operacjami w wyrażeniu, natomiast operatory "post-" wykonują je po wyliczeniu wartości wyrażenia. Pre i post ponieważ prefix i postfix. 

int c;
c=8;
c++; //wyrażenie = 8, c = 9
++c; //wyrażenie = 10, c = 10
c--; //wyrażenie = 10, c = 9
--c; //wyrażenie = 8, c = 8

 

rozumiesz? A bakterie=bakterie*2 znaczy po prostu, że zmienna przyjmuje wartość swoją pomnożona przez 2 czyli po prostu się mnoży. Warto tutaj użyć krótszego zapisu: bakterie *= 2. Łatwiej to zrozumiesz gdy przy takim zapisie pomyślisz sobie ze bakterie to mnozenie siebie (poniewaz * przed =) przez 2 ;) 

Podobne pytania

0 głosów
1 odpowiedź 265 wizyt
0 głosów
1 odpowiedź 1,891 wizyt
pytanie zadane 7 stycznia 2016 w C i C++ przez niezalogowany
+2 głosów
2 odpowiedzi 246 wizyt
pytanie zadane 24 czerwca 2021 w JavaScript przez Yorweth Obywatel (1,310 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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!

...