Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 7 sty 2025, o 00:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 21 sty 2017, o 16:12 
Offline
Użytkownik

Dołączył(a): 06 sty 2012
Posty: 25
Lokalizacja: Wejherowo
Pomógł: 0

Cześć. Czy zmienna czas musi być static aby wyświetlić się 0 1 2 3 4?
Czy tak będzie działało?

[ a kolega jest z nami od 2012 roku i nie wie jak się wstawia kod źródłowy na forum ? bardzo proszę poprawić zgodnie z instrukcją: topic7402.html i pamiętać o tym na przyszłość - mirekk36 ]

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 22 sty 2017, o 20:41 przez peikman, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sty 2017, o 16:42 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Załóżmy że masz to w pętli while(1). Przeanalizujmy co się dzieje bez "static".

Pierwszy obieg pętli while:
-Inicjalizujemy zmienną "licznik" liczbą 0
-Sprawdzamy czy "licznik" jest mniejsze od 5 (aktualnie ma wartość 0)
-Inicjalizujemy zmienną "czas" liczbą 0
-Wyświetlamy zmienną "czas" (aktualnie ma wartość 0)
-Inkrementujemy zmienną czas
-Inkrementujemy zmienną licznik

Drugi obieg pętli:
-Inicjalizujemy zmienną "licznik" liczbą 0
-Sprawdzamy czy "licznik" jest mniejsze od 5 (aktualnie ma wartość 0)
-Inicjalizujemy zmienną "czas" liczbą 0
-Wyświetlamy zmienną "czas" (aktualnie ma wartość 0)
-Inkrementujemy zmienną czas
-Inkrementujemy zmienną licznik

Widzisz w czym problem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sty 2017, o 17:04 
Offline
Użytkownik

Dołączył(a): 06 sty 2012
Posty: 25
Lokalizacja: Wejherowo
Pomógł: 0

Myślę, że program nie wyjdzie z pętli if do czasu gdy licznik nie wzrośnie do 5.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sty 2017, o 17:07 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

If to nie pętla, tylko instrukcja warunkowa. While to pętla.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sty 2017, o 17:13 
Offline
Użytkownik

Dołączył(a): 26 lip 2015
Posty: 269
Pomógł: 34

dobra to tak musi być static aby się tak wyświetlała. Zobacz na ten program
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

teraz zmienna licznik nie ma static i za każdym obiegiem pętli będzie się tworzyć na nowo czyli ostatecznie zawsze na początku pętli będzie miała wartość 0 niezależnie ile razy pętla się wykona
a teraz ze słówkiem static.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

zmienna licznik tylko raz zostanie stworzona i do niej będzie przypisana liczba 0 tylko raz niezależnie ile razy pętla się obiegnie . W tym programie za każdym obiegnięciem pętli będzie się zwiększać o 1 zmienna licznik. za drugim obiegiem pętli zmienna licznik nie utworzy się na nowo jest zrobiona tylko raz i działa już do końca ;) .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sty 2017, o 19:23 
Offline
Użytkownik

Dołączył(a): 06 sty 2012
Posty: 25
Lokalizacja: Wejherowo
Pomógł: 0

Jeśli chodzi o kod to napisałem trochę bez przemyśleń. Nie do końca o to mi chodziło. Jeszcze raz :)

Czy zmienna czas w przypadku gdy jest zmienną automatyczną to będzie tworzona od nowa po każdym sprawdzaniu warunku w pętli while?
Czyli czy zmienna czas musi być static? Czy nie aby wyświetlić 0 1 2 3 4.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sty 2017, o 19:32 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27338
Lokalizacja: Szczecin
Pomógł: 1041

peikman napisał(a):
OK. Już się poprawiam

chodzi o EDYCJĘ pierwszego postu w wątku (na górze) to ten edytuj i popraw

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sty 2017, o 10:09 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Właśnie po to jest "static" aby zachować wartość zmiennej. W przeciwnym wypadku będzie zawsze inicjalizowana, w tym przypadku, liczbą 0.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO