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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 18 lip 2025, o 19:49


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
    Autor Wiadomość
    PostNapisane: 14 wrz 2016, o 08:54 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    Witam,
    Koledzy analizując różne programy w C spotykam się z definicją stałych za pomocą dyrektywy "define". W jednym miejscu jest:
    1)
    Kod:
    #define 100

    w innym:
    2)
    Kod:
    #define 100U

    a jeszcze w innym:
    3)
    Kod:
    #define (uint32_t)100


    Oczywiście czytałem w BB, że literka "U" na końcu stałej dosłownej powoduje, że kompilator zapisze ją bez znaku a literka "L" jako long int. Niemniej czasem spotyka się zapis z punktu 1 czy 3 gdzie jest rzutowanie stałej dosłownej na uin32_t. Pytanie gdzie i kiedy dany zapis stosować? Jest na to prosta recepta?
    Pozdrawiam



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 wrz 2016, o 09:43 
    Offline
    Użytkownik

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

    Tu masz wytłumaczone dlaczego: http://atnel.pl/domyslna-promocja-do-typu-int.html



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 wrz 2016, o 09:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 mar 2014
    Posty: 1475
    Pomógł: 167

    Zacznij od przeczytania http://atnel.pl/domyslna-promocja-do-typu-int.html

    --
    Pozdrawiam,
    Robert

    ------------------------ [ Dodano po: kilkunastu sekundach ]

    O HomoChemicus był pierwszy :(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 wrz 2016, o 09:49 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    Panowie to dokładnie przeczytałem ale nie ma tam nic o rzutowaniu stałych definiowanych define-em :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 wrz 2016, o 11:11 
    Offline
    Użytkownik

    Dołączył(a): 29 lip 2014
    Posty: 195
    Pomógł: 44

    Witam,

    Jarecki napisał(a):
    Panowie to dokładnie przeczytałem ale nie ma tam nic o rzutowaniu stałych definiowanych define-em :)

    No bo preprocesor jest "głupi jak kilo gwoździ", a
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    wstawia do kodu przed właściwą kompilacją 100 w miejsce XXX i tyle. A jak tego użyjesz, i czy będzie to 100U, (uint32_t)100, czy coś jeszcze, to już od Ciebie zależy. W tym konkretnym przypadku konieczność stosowania zabiegów ze 100U czy (uint32_t)100 wynika z tego co jest w linku, który Koledzy Ci podali.

    Pozdrawiam, QuadMan.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 wrz 2016, o 12:15 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    QuadMan napisał(a):
    Witam,
    No bo preprocesor jest "głupi jak kilo gwoździ", a
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    wstawia do kodu przed właściwą kompilacją 100 w miejsce XXX i tyle. A jak tego użyjesz, i czy będzie to 100U, (uint32_t)100, czy coś jeszcze, to już od Ciebie zależy.
    Pozdrawiam, QuadMan.


    I właśnie o to mi chodzi kiedy użyć rzutowania a kiedy po prostu dopisać U lub UL?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 wrz 2016, o 12:23 
    Offline
    Moderator
    Avatar użytkownika

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

    Jarecki napisał(a):
    I właśnie o to mi chodzi kiedy użyć rzutowania a kiedy po prostu dopisać U lub UL?

    Zadając to pytanie widać, że

    1. albo nie przeczytałeś w ogóle tego artykułu o domyślnej promocji do int
    2. albo nie przeczytałeś z uwagą bo sądzisz że ty pytasz o coś innego
    3. albo przeczytałeś ale nie zrozumiałeś o co w tym artykule chodzi i nie dopytałeś o to czego tam nie rozumiesz ....

    w związku z tym koło się zamyka i dalej pytasz o to samo

    _________________
    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: 14 wrz 2016, o 14:36 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    To zadam pytanie inaczej:
    czym różni się:
    Kod:
    #define NAZWA 100UL

    od:
    Kod:
    #define NAZWA (uint32_t)100

    ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 wrz 2016, o 14:45 
    Offline
    Moderator
    Avatar użytkownika

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

    niczym - jedno i drugie spowoduje, że kompilator przyjmie do obliczeń wartość 32 bitową bez znaku


    Autor postu otrzymał pochwałę

    _________________
    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: 15 wrz 2016, o 07:31 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    I o to chodziło właśnie :) dziękuję :)



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 10 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