pytanie odnośnie przykładu o funkcjach inline Symfonia c++ standard Jerzego Grębosza
Ostatnio zmodyfikowano 2016-08-10 19:55
latajacaryba Temat założony przez niniejszego użytkownika |
pytanie odnośnie przykładu o funkcjach inline Symfonia c++ standard Jerzego Grębosza » 2016-08-10 01:10:16 Witam. Czytam książkę Jerzego Grębosza "Symfonia C++ Standard". Jest tam pewien przykład int zao( double liczba ) { return( liczba + 0.5 ); }
Wszystko jasne, funkcja, podajemy liczbę z przecinkiem, do tego dodaje się 0,5 a wynik zwracamy jako int. Przykład z książki: 6.8+0.5=7,3 (funkcja int więc obcinamy .3) -> 7 6.2+0.5=6.7 -> 6 Wszystko jasne. Teraz autor pokazał, że albo posługujemy się funkcją i podał taki kod: I = zao( m ) + zao( n * 16.7 ); albo: [ cpp ] I =( int )( m + 0.5 ) +( int )(( n * 16.7 ) + 0.5 )
i tu jest moje pytanie. Co ma oznaczać to int w nawiasie? Czy int oznacza wyrażenie m+0.5 ? PS. Nie miałem pojęcia jak inaczej nazwać temat. PPS. Temat założyłem, żeby się upewnić w moich założeniach, wole napisać niż źle zapamiętać. Z góry dziękuję za odpowiedzi. |
|
Piastlis |
» 2016-08-10 03:28:39 To (int) zamienia ci liczbę rzeczywistą na int. |
|
karambaHZP |
» 2016-08-10 05:39:44 W C++ stosuj static_cast < typ >( argument ) |
|
latajacaryba Temat założony przez niniejszego użytkownika |
» 2016-08-10 17:15:38 Piastlis nie rozumiem, int to typ danych który przechowuje liczby rzeczywiste Ale co do kodu to napisałem program na jego podstawie #include <iostream> using namespace std; int main() { int I; double m = 6.4, n = 2.6; I =( int )( m + 0.5 ) +( int )(( n * 16.7 ) + 0.5 ); cout << I; }
Program oblicza "I" i wypisuje je na ekran. Wynik wynosił 49 Ale kiedy usunąłem drugie int w nawiasie: I =( int )( m + 0.5 ) + (( n * 16.7 ) + 0.5 ); wynik wyszedł 50 Kiedy usuniemy pierwsze int w nawiasie to nic się nie zmienia i wynik nadal wynosi 49. tylko po usunięciu drugiego int w nawiasie zmienia wynik na 50. Help... |
|
Piastlis |
» 2016-08-10 18:50:18 Wszystko po kolei...Liczby komp zapisuje na różne sposoby.Pierwszy to taki jaki znasz z kalkulatora... jakaś liczba...kropka i druga która jest ułamkiem.Potem literka i liczba która określa rząd wielkości.Taki typ to tzw typ rzeczywisty( float,double,long double).Drugi typ to typ wyliczeniowy.Tutaj nie ma ułamków ,istnieją tylko liczby całkowite (char,int,long,long long).C i C++ pozwalają na mieszanie tych typów w wyrażeniach .To o co się pytasz to tzw "rzutowanie"...Inaczej mówiąc "przetłumaczenie" lub "zinterpretowanie" zmiennej jednego typu na inny....Jak zaczynasz uczyć się programowania to daj sobie spokój z tym tematem.Wrócisz do niego gdy będzie ci do czegoś takie działanie niezbędne.. |
|
latajacaryba Temat założony przez niniejszego użytkownika |
» 2016-08-10 19:05:03 Czy masz na myśli rzutowanie operatorami static_cast itd? Bo jeśli tak, to przecież ich składnia to m = static_cast < int >( y ) a nie (int)? |
|
latajacaryba Temat założony przez niniejszego użytkownika |
» 2016-08-10 19:13:00 ohh... to rzutowanie według tych starych sposobów? (nazwa_innego_typu)wyrażenie Czy o to chodzi?
Na marginesie nie wiem dlaczego autor użył tego skoro uważał to za "nie zalecane" |
|
Piastlis |
» 2016-08-10 19:27:08 "Rzutowanie" to szersze pojęcie.Możesz np. potraktować liczbę rzeczywistą jakby była tablicą char,int lub long.Co do składni..(int) jest częścią C.C++ pozwala na tworzenie własnych operatorów rzutowania.Tak logicznie to (int)(y) i static_cast<int>(y) to dokładnie to samo. |
|
« 1 » 2 |