any-rzutowanie - typ(zmienna)

0

Cześć. Uczę się C++ i w ramach nauki analizuję czyjś kod i mam do Was 2 pytania:

  1. Przeglądając czyjś kod trafiłem na coś dziwnego, czego nigdy wcześniej nie widziałem:
float(zmienna) 

Czy może mi ktoś wyjaśnić co oznacza taki zapis? To jest podobne do rzutowania, z tą różnicą, że przy rzutowaniu w nawiasie jest typ a nie zmienna.
Do tego w kodzie jest również bardziej rozbudowana wersja:

float(zmienna1 + zmienna2)

Co oznacza ten zapis? Bo float to raczej nie funkcja...

  1. W tym samym kodzie mam taki zapis:
typedef struct nazwa{
        float zmienna1;
        float zmienna2;
        //...
} NAZWA, *INNA_NAZWA; 

Czy może mi ktoś wyjaśnić co oznacza ten zapis?

Z góry dziękuję za pomoc!

0

Float to generalnie zmiennoprzecinkowa, tzn taka która zawiera "część ułamkową". Generalnie od "int-a" różni się tym że może mieć wartość dajmy na to 3,7, podczas gdy in albo 3 albo 4 ale nic pomiędzy nimi. Tutaj została prawdopodobnie zastosowana ponieważ z jakiegoś powodu float był wymagany (np zmienna była wysyłana jako parametr do funkcji).

0

To jest rzutowanie w stylu C++ zezwolone ze względu na podobieństwo do używania konstruktorów. Co do 2 zapisu jest to normalny typedef z tym wyjątkiem, że jako argument jest podana cała struktura. Jest to zapis z C gdzie każdą strukturę trzeba było poprzedzić słówkiem struct i by tego nie robić trzeba było stosować taki hack.

0

Dzięki Sig, jednak nie wiem czy się dobrze zrozumieliśmy.
Ogólnie to wiem, że typ float to zmienna zmiennoprzecinkowa. Zastanawiam się jednak, dlaczego autor użył zapisu float(inna_zmienna), gdzie inna_zmienna jest typu int.
Z tego co wiem, to rzutowanie powinno wyglądać tak: (float)inna_zmienna a nie tak jak wyżej. A może to są dwie takie same operacje, tylko że jakiś inny standard?

0

Dzięki winerfresh!
Czyli rozumiem, że (flota)zmienna jest tożsamy z float(zmienna)? Tak?

0
  1. To jest po prostu inny zapis tego samego: http://www.cplusplus.com/doc/tutorial/typecasting/
  2. To jest definicja struktury połączona z typedef'em:
    NAZWA z; to to samo co nazwa z;, a INNA_NAZWA z; to to samo co nazwa *z;
    Takie coś w kodzie to naleciałość z C, gdzie bez typedef'a przy deklaracji instancji jakiejś struktury trzeba było pisać słowo struct np. struct nazwa z;

//zostałem wyprzedzony ;)

0

Mniej więcej.

0

Dzięki wielkie Panowie! :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1