Article View: pl.comp.objects
Article #4669Re: Prawda o C++
From: Sektor van Skijlen
Date: Mon, 25 Jan 1999 16:17
Date: Mon, 25 Jan 1999 16:17
65 lines
3873 bytes
3873 bytes
W ostatnim odcinku, Adam Szeliga naskrobal: : Andrzej Lewandowski wrote: :> siosion@meil.pw.edu.pl (Adam Szeliga) wrote: :> :> >Andrzej Lewandowski wrote: :> :> >> >programy numeryczne. :> >> :> >> Nie umniejszajac zaslugi Sztostrupa, jezyk w ktorym do zmiennej typu :> >> "character" mozna dodac "1" mogl wymyslec tylko idiota. Oczywiscie, :> >> Sztostrup jest to polwinny; dodac nalezy nazwiska K&R. [ CIACH ] :> Jakis czas temu ludzie wymyslili cos takiego jak "typy". Typy :> okreslaja nie tylko ilosc bajtow potzrebnych na reprezentacje danych, :> ale i dopuszczalne operacje na tych danych. Zauwazyli tez dosyc dawno, :> ze dopuszczalne operacje na znakach powinny byc inne niz dopuszczalne :> operacje np. na liczbach calkowitych. Oczywiscie, w ramach ogolnej :> dowolnosci ktos moze sobie uznac ze np. ma sens wyciaganie pierwiastka :> kwadrarowego z obiektu 'A'. Zyjemy w wolnym swiecie. Co pozwale :> rowniez mnie wyrazic swoj stosunek do podobnych pomyslow, co wyrazilem :> w poprzednim postingu. : Oczywiscie zgadzam sie z opinia iz definicja typu to takze okreslenie : dopuszczalnych na nich operacji. Nigdzie nie znalazlem jednak, informacji aby : w zmiennych typu char maja byc przechowywane wylacznie znaki. Jak juz wiele : razy tutaj napisano C to taki przenosny assembler. W assemblerze (zapewe w : kazdym) na danych jedno bajtowych mozna wykonywac operacje artmetyczne. Z : reszta istnieje takze typ unsigned char. Byc moze nieszczesliwa jest tu nazwa : typu char, ktora sugeruje szczegolne zastosowanie. Niestety jest to zly sposob myslenia. Nie po raz pierwszy mowie, ze operacja 'a' + 1 to nie jest dodanie 1 do znaku 'a', tylko dodanie 1 do liczby 97, a liczba 97 jest to niejawnie przekonwertowany znak 'a' na odpowiadajacy mu kod ASCII. Czy to jest naprawde takie trudne do zrozumienia ? Zostalo to w C dopuszczone, aby mozna bylo wykorzystac typ char jako liczbe calkowita dlugosci jednego bajtu (aby zaoszczedzic miejsca). Z tych samych powodow istnieje rowniez typ unsigned char, ktory rozni sie tym od char, ze nie jest domyslnie konwertowany na int, tylko na unsigned int. Tak samo przeciez operacja 'a' + 'b' nie jest dodawaniem 'a' i 'b', tylko dodawaniem liczb 97 i 98 (nie w sensie asemblera, lecz w sensie _jezyka_ - prosze sprawdzic sobie w C++, ktora metoda ostream::operator<<() zostanie wybrana dla wyniku tej operacji!). W Pascalu mozemy zrobic dokladnie to samo, tylko ze musimy jeszcze uzyc funkcji ord() dla tych znakow, a C tego nie wymaga i konwertuje automatycznie. I to jest JEDYNA roznica. Prosze wiec nie mowic wiecej takich idiotyzmow, ze dla typu char zostaly zdefiniowane operacje dodawania i odejmowania (tak i jeszcze pewnie wyciaganie pierwiastkow)! Dla typow char istnieja najwyzej operatory porownywania (znak jest "ten sam", "wczesniejszy", lub "pozniejszy"). A co ze zdefiniowaniem operatora || dla typu float ? Tez takowe istnieje ? Obawiam sie, ze lepiej by Pan zrobil, poswiecajac troche czasu na poznanie roznych kruczkow w jezyku C, kiedy ja jeszcze siusialem w majtki. Pozdrawiam, -- [- Ben a dar van dijn vijt -] Michal 'Sektor' Malecki <sektor@spam.org> - zartowalem, @beer.com :*) Politechnika Lodzka, Elektrotechnika/Informatyka st.
Technical Details
Message-ID:
<78i5eo$f$6@polonez.man.lodz.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.man.poznan.pl!news.man.lodz.pl!not-for-mailReferences:
<36AA1255.E592B09D@meil.pw.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.man.poznan.pl!news.man.lodz.pl!not-for-mail
From: Sektor van Skijlen <sektor@spam.org>
Newsgroups: pl.comp.objects
Subject: Re: Prawda o C++
Date: 25 Jan 1999 16:17:28 GMT
Lines: 65
Message-ID: <78i5eo$f$6@polonez.man.lodz.pl>
References: <36AA1255.E592B09D@meil.pw.edu.pl>
NNTP-Posting-Host: zly.kis.p.lodz.pl
User-Agent: tin/pre-1.4-981225 ("Volcane") (UNIX) (SunOS/5.5.1 (i86pc))
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit