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



Teraz jest 28 kwi 2026, o 08:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 17 lut 2014, o 15:47 
Offline
Użytkownik

Dołączył(a): 26 lip 2013
Posty: 29
Pomógł: 3

Mam pytanie odnośnie działania tychże funkcji. Przykładowo:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Pytanie brzmi dlaczego kompilator pokazuje błąd, że funkcja nie zwraca żadnej wartości?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2014, o 15:53 
Offline
Moderator
Avatar użytkownika

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

bo pewnie coś źle robisz ;) np nie zasejwowałeś (save) pliku i kompilujesz np pustą funkcję ? ;)

_________________
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: 17 lut 2014, o 16:16 
Offline
Użytkownik

Dołączył(a): 26 lip 2013
Posty: 29
Pomógł: 3

Zgodnie z radami mam włączoną funkcję autosave'u przy kompilacji :) Coś musiałem pomieszać, bo teraz wszystko działa :shock:
EDIT:
Jednak dalej coś nie działa:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Zwraca błąd "No return, in function returning non-void"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2014, o 17:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 mar 2013
Posty: 175
Pomógł: 10

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


musisz dodać jakiegoś elsa bo jak się if nie wykona to będzie przypadek, w którym funkcja nic nie zwroci.
np.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2014, o 18:33 
Offline
Moderator
Avatar użytkownika

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

matty24 napisał(a):
Jak na moje oko,


bardzo dobre oko - po prostu trzeba myśleć i patrzeć jak końpilator ;) skoro jest jedna możliwość że nie przejdzie żaden warunek ? to co ? ;) no to dlatego warning

_________________
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: 17 lut 2014, o 21:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Hmmm, chwila, bo nie nadążam... czyli że tu trzeba dodać fikcyjne i niepotrzebne "else return coś tam" dla wewnętrznego If aby ten pierwszy zewnętrzny If go nie interpretował ??? Przecież odcięty jest klamrą... nic z tego nie kumam :shock:

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2014, o 21:30 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

generalnie chyba chodzi o to, że funkcja zawsze musi coś zwracać, a nie jakieś fikcyjne "else".
Jak kompilator sobie przeanalizuje, że może się tak zdarzyć, że nic nie zwróci to ostrzega...

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2014, o 21:32 
Offline
Użytkownik

Dołączył(a): 05 lut 2013
Posty: 302
Pomógł: 19

A ja tam mysle ze prosciej byloby ostatnie else return 0 zamienic na return 0 i byloby po klopocie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2014, o 21:35 
Offline
Użytkownik

Dołączył(a): 05 lut 2013
Posty: 302
Pomógł: 19

@SylwekK wez kartke i dlugopis i sobie zdebuguj funkcje. Przypatrz sie jaka funkcja zostanie wykonana jesli wewnetrzy if nie bedzie spelniony? Prawda ze zadna? Bo skoro tam dotarlismy to else z kodu filipa juz nie bedzie wywolywane.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2014, o 21:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Cytuj:
A ja tam mysle ze prosciej byloby ostatnie else return 0 zamienic na return 0 i byloby po klopocie.


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

Jeśli wykona się wewnętrzny if to funkcja zwróci jeden, a jeśli nie to program przejdzie do końca funkcji i zwróci zero.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2014, o 21:54 
Offline
Moderator
Avatar użytkownika

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

Tu nie o to chodzi - jak będzie prościej czy lepiej czy ładniej ;)

trzeba pamiętać o jednym

JEŚLI się zdefiniowało TYP jaki funkcja zwraca - to nie może dojść do sytuacji - że nie nastąpi żaden return.

Aż tyle albo tylko tyle ;)

i nie ważne jak się skonstruuje program w środku czy z IF'ami czy bez ... po prostu nie może dojść do takiej sytuacji bo będzie słuszny warning. A już jak kto sobie IF'y zaplanuje - to nie ważne - jak się pomylisz - to kompilator to zauważy - co widać na załączonym obrazku tzn temacie tego wątku ;)

_________________
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: 18 lut 2014, o 02:26 
Offline
Użytkownik

Dołączył(a): 31 paź 2012
Posty: 99
Pomógł: 4

jacekk232 napisał(a):

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

Jeśli wykona się wewnętrzny if to funkcja zwróci jeden, a jeśli nie to program przejdzie do końca funkcji i zwróci zero.


Po mojemu w takiej konstrukcji funkcja zawsze zwróci zero .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lut 2014, o 08:23 
Offline
Moderator
Avatar użytkownika

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

pagosa747 napisał(a):
Po mojemu w takiej konstrukcji funkcja zawsze zwróci zero .


Na pewno nie zawsze zwróci zero ;) bo gdy dotrze kod do miejsca return 1; to na tym się zakończy funkcja , nastąpi koniec jej żywota

_________________
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: 18 lut 2014, o 09:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Ach, zaskoczyłem ;) Zgadza się, funkcja nie może nic nie zwrócić i wydaje się to w pełni logiczne.

_________________
http://www.sylwekkuna.com



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: 14 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 6 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO