Co do ostatniego punktu. Operator "=" to operator przypisania, działa on zawsze tak samo, bez względu na to czy jest w pętli, instrukcji warunkowej, funkcji czy czymkolwiek innym. Jeśli chodzi o zapis matematyczny, to faktycznie wygląda, że nie ma logiki.;) W programowaniu to inaczej wygląda.
Tłumacząc to możliwie prosto, operator przypisania, przypisuje ,to co stoi po jego prawej stronie temu co stoi po jego lewej stronie. Zmienne zmiennymi, również dobrze możesz powiedzieć, że dany samochód ma 100 KM. Czyli jego właściwości jaką jest moc, przypisujesz wartość liczbową. Inaczej możesz powiedzieć, że samochód A ma 2 razy koni mechanicznych to samochód B, czyli mocy samochodu A przypisujesz moc samochodu B pomnożoną przez 2. W przypadku programu, który zamieściłeś, np.
populacja=populacja*2;
Do zmiennej populacja zostaje przypisana jej obecna wartość pomnożona przez 2. Należy pamiętać o tzw. priorytetach operatorów w C/C++ czy jakimkolwiek innymi języku programowania. Może to górnolotne określenia ("priorytety operatorów"). W praktyce sprowadza się to do tego samego jak kolejność działań (dodawanie, odejmowanie, mnożenie, dzielenie) jak w podstawówce.;) A więc w przypadku fragmentu kodu, zamieszczonego wyżej, mnożenie jest wykonywane przed przypisaniem.
Co do zmiennych, nie wiem czy akurat trafiłem w to co chciałbyś wiedzieć, ale może się uda. Zadeklarowane zmienne mogą mieć dowolną wartość w przypadku zmiennych lokalnych (czyli definiowanych wewnątrz np. funkcji) lub mogą być automatycznie zerowane w przypadku zmiennych globalnych, czyli mówiąc łopatologicznie zaraz po includach. A mówiąc bardziej "fachowo" poza funkcjami. Użycie zmiennej z przypadkową wartością (czyli jak nie przypisujesz tej zmiennej jakiejkolwiek wartości), może powodować dziwne, nieoczekiwane działania programu, np. niewykonywanie pętli, która powinna się wykonywać i inne nieoczekiwane sytuacje.