Pare pytań dotyczących modyfikacji zmiennych.
Ostatnio zmodyfikowano 2014-06-22 20:53
lukhol Temat założony przez niniejszego użytkownika |
Pare pytań dotyczących modyfikacji zmiennych. » 2014-06-22 18:48:50 Siema, mam kod, w ktorym nie koniecznie wiem co dzieje się z każdą ze zmiennych, kod wygląda tak: #include<iostream>
using namespace std; int a = 1, b = 1; int main() { int c, d, e; d = c = a + 1; a = 1 + 0.1f; c /= d + b--; if( 1 ) { int b = 2; for(; b--; ) d--; } e = 2 ? 1: 0; cout << a << endl << b; cout << endl << "c: " << c; cout << endl << d; cout << endl << e; }
1. Jak działa wpisanie c/= ... ? 2.Czemu zmienna b zmniejszyła się do 0? 3 Co oznacza pętla for z argumentem 1 ? 4. Co oznacza linijka e=2 ? 1: 0; Jeżeli ktoś ma jakiś artykuł, z którego mógł bym nauczyć się jak działają poszczególne operację tego typy proszę o wysłanie mi do niego linku ;) Potrzebuje szybko to zrozumieć. |
|
Jacob99 |
» 2014-06-22 19:23:15 1. c /= d + b--; oznacza c = c / d + b--; . 2. Ponieważ robisz postdekrementację b-- . 3. [chyba chodziło ci o if a nie o for ] Warunek ten oznacza "jeśli jest prawdziwe...". 4. To jest wyrażenie warunkowe - jeśli warunek e = 2 (chyba miało być e == 2 ) jest spełniony to coś ma wartość 1, jeśli nie to 0. Chociaż ogólnie ten kod totalnie nie ma sensu i nawet nie powinien się kompilować. |
|
colorgreen19 |
» 2014-06-22 19:33:48 3. for z argumentem 1 działa w nieskończoność bo zawsze jest prawda ( 1 ); |
|
lukhol Temat założony przez niniejszego użytkownika |
» 2014-06-22 20:36:47 W pytaniu 3 chodziło oczywiście o if, a nie o for. Czyli jak mam pętle if(0) to wykonuje się ona za każdym razem ? Czy to, ze zmienna utworzona w pętli if ( chodzi o zmienną b ) oznacza, ze nie zmieni się zmienna b poza pętlą ?
Dodatkowo czemu skoro c/= jest równoznaczne z c=c/ wychodzi wynik 0 ? dzieląc 2/2 wychodzi przecież 1. |
|
SeaMonster131 |
» 2014-06-22 20:53:54 if to nie jest pętla, a instrukcja warunkowa. Czyli jak mam pętle if(0) to wykonuje się ona za każdym razem ? |
Nie. if(0) jest równoznaczne z if(false), a instrukcja warunkowa wykona się wtedy, kiedy warunek będzie true. Czy to, ze zmienna utworzona w pętli if ( chodzi o zmienną b ) oznacza, ze nie zmieni się zmienna b poza pętlą ? |
Tutaj chodzi o zakres zmiennych - ogólnie tak jak mówisz (oprócz tej "pętli if"), ale bardziej szczegółowo możesz poczytać: Dodatkowo czemu skoro c/= jest równoznaczne z c=c/ wychodzi wynik 0 ? dzieląc 2/2 wychodzi przecież 1. |
c /= 2 + 1 c = c/(2+1) 2/3 = 0. @Jacob99: 4. To jest wyrażenie warunkowe - jeśli warunek e = 2(chyba miało być e == 2) jest spełniony to coś ma wartość 1, jeśli nie to 0. |
Nie do końca tam jest pomyłka. Zamieniając e = 2 ? 1: 0; na: if( 2 ) e = 1; else e = 0;
lepiej to widać. 1. c /= d + b--; oznacza c = c / d + b--;. |
Trzymając się podstawowych zasad matematyki, c = c /( d + b-- ) |
|
« 1 » |