Goto page Previous 1, 2, 3, 4 Next
Grzegorz Niemirowski
Guest
Thu Aug 04, 2016 9:53 am
stchebel@gmail.com <stchebel@gmail.com> napisał(a):
Quote:
Otóż mam takie odruchowe wrażenie, ale wolę się upewnić. Piszesz, że
należy trymać gwiazdki przy zmiennych. Należy, czy trzeba? Przepraszam,
moje pytania mogą wydawać się irytujące, ale pytam zupełnie serio. Różne
"ciekawe" historie przytrafialy mi się z wszelakimi narzędziami
programistycznymi zarówno w hard i soft.
Spacje przy gwiazdkach nie mają znaczenia dla kompilatora. Natomiast w
przypadku
int *a, b;
lepiej nie robić odstępu po gwiazdce, bo dzięki temu lepiej widać, że a
będzie wskaźnikiem, a b nie. To tylko pomoc dla programisty i chyba nie ma
innych przypadków gdzie położenie gwiazdki coś zmienia.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express:
http://www.grzegorz.net/oe/
Uptime: 8 days, 12 hours, 25 minutes and 7 seconds
Grzegorz Niemirowski
Guest
Thu Aug 04, 2016 10:01 am
stchebel@gmail.com <stchebel@gmail.com> napisał(a):
Quote:
Dam ci radę: Przestań udzielać rad.
Naprawdę byłoby prościej, gdybyś sam się do dwóch prostych rad zastosował:
- mniej emocji i wulgaryzmów, więcej merytoryki
- jak pytasz o C/C++, to nie wrzucaj filozoficznych rozważań o Pascalu albo
co myślisz o składni C. Kogo to interesuje? To nawet nie jest grupa
programistyczna.
O tym, że nie lubisz składni C informowałeś już grupę wielokrotnie. Zamiast
jednak jako tako poznać w końcu to nieszczęsne C, to ciągle narzekasz na
jakieś pierdoły zamiast lepiej poznać filozofię tego języka. A potem się
dziwisz, jak ktoś Ci napisze że programowanie nie jest dla Ciebie...
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express:
http://www.grzegorz.net/oe/
Uptime: 8 days, 12 hours, 31 minutes and 31 seconds
Guest
Thu Aug 04, 2016 10:18 am
W dniu czwartek, 4 sierpnia 2016 09:53:22 UTC+2 użytkownik ajt napisał:
Quote:
Umiejscowienie nie ma żadnego znaczenia, wszystkie trzy przykłady są
równoważne, pominąłeś jeszcze typ*zmienna, to również to samo.
Oczywiście nie można wykluczyć jakiejś egzotycznej implementacji, gdzie
ktoś w ten sposób chciałby nadać inne znaczenia, ale to już nie byłoby C ...
Dzięki za odpowiedź. Chyba nie do końca prawidłowo zadałem pytanie. Korekta:
1) void Jakaś_Tam_Funkcja(typ* zmienna_1,zmienna_2,....,zmienna_n);
2) void Jakaś_Tam_Funkcja(typ *zmienna_1,zmienna_2,....,zmienna_n);
3) void Jakaś_Tam_Funkcja(typ * zmienna_1,zmienna_2,....,zmienna_n);
Chodzi mi o cały wektor zmiennych. Aha , pominąłem jeszcze to samo jak wyżej, ale BEZ GWIAZDKI!! Jak to wtedy działa?
Piotr GaĹka
Guest
Thu Aug 04, 2016 10:33 am
Użytkownik <stchebel@gmail.com> napisał w wiadomości
news:29f17d21-b0b0-4c39-accb-5f6e2410660c@googlegroups.com...
Quote:
int *a, b;
int* a, b;
Zatem skoro * dotyczy tylko elementu tuż za znakiem, to przytulajmy go
doń,
na pewno zyskujemy na czytelności.
Nie wiem gdzie zyskujemy na czytelności..
Serio nie widzisz różnicy w czytelności?
Patrząc na wszystkie deklaracje w taki sposób:
typ coś1, coś2, coś3...
i wszystkie coś-e muszą mieć typ równy typ.
Jak masz napisane:
int *a, b;
To od razu widzisz, że zarówno *a jak i b są typu int.
A jak napiszesz:
int* a, b;
to możesz myśleć, że zarówno a jak i b są typu int*, co nie jest prawdą.
Dlatego pierwszy zapis jest czytelniejszy, choć oba poprawne.
Ja piszę tak, aby nie mieć nigdy takich wątpliwości. Jak nie jestem na 100%
pewien, jak co kompilator zinterpretuje, to nie stosuję takiego zapisu.
Moje deklaracje wyglądają np. tak:
int i,j,m,n,c;
int *p;
int *s;
int t[10];
Kiedyś jak na całym ekranie mieściło się 25 linijek, a w środowisku typu
Turbo C++ okienko dla źródła miało jeszcze mniej to takie marnowanie linijek
mogło boleć, ale to już dawno za nami.
Poza tym mało kiedy funkcja ma tyle zmiennych.
Quote:
Gwiazdka w lewo, prawo, pośrodku, znaki zapytania gdziebądź, wykrzykniki
itd, itp..
Nosz kurwa, wolę w assemblerze mov a,b - przynajmniej wiadomo o co chodzi.
Nigdy nie pisałem w assemblerze, ale czy "mov a, b" nie zadziała tak samo
jak "mov a ,b"?
Jeśli tak to zapytam: Dlaczego odmawiasz * prawa do takiego samego
zachowania się jak , ?
Wydaje mi się, że dawniej wszystkie deklaracje musiały być na początku bloku
funkcji (a może każdego bloku). Możliwość deklaracji typu for(int
i=0;i<10;i++) została wprowadzona dla wygody programistów, ale nie ma
przymusu.
P.G.
Guest
Thu Aug 04, 2016 10:42 am
W dniu czwartek, 4 sierpnia 2016 10:16:47 UTC+2 użytkownik J.F. napisał:
Quote:
Zreszta ... kto nie programowal w PL/1, ten nie wie co to jest
konwersja typow
Nie wiem nawet i nie chcę wiedzieć czym jest PL/1. Domyślam się, że tam to dopiero jest Brothel

)
Quote:
Tymczasem w C, możesz zadeklarować nazwę zmiennej gdzie popadnie.
Nawet zmienną sterującej pętli wewnątrz pętli!! for(int i.. i tak
dalej) .
BURDEL jak cholera !! Hahh!!
Jaki burdel ? Zmienna deklarujesz w "bloku" tzn w {}. I w tymze bloku
obowiazuje.
Dzieki temu nie musisz daleko patrzec.
Nie pamietam - a w Pascalu nie jest tak samo ?
Prawie tak samo, tylko ciuta porządniej. Nie w bloku {-}/begin-end, lecz w dedykowanym bloku deklaracji zmiennych lokalnych (var), zaraz po deklaracji funkcji/procedury(w C jest to "void" - boszsz...). Dzięki temu nie ma potrzeby szukania blisko/daleko.. Po prostu wiadomo gdzie szukać
Quote:
A idę o zakład , że:
1) Każdy algorytmista czytając żródło w Pascalu, zrozumie o co
chodzi
2) Czytając żródło C - będzie czkawka

)
Owszem, jakies ambitniejsze konstrukcje wskaznikowo-tablicowe moga
czlowieka dobic, ale coz robic
Otóż i to. Nawet tak duperelny temat jak mnożenie macierzy, gdzie traba pamiętać o odjęciu jedynki od numery wiersz/kolumny.
Quote:
Nie narzekaj na C. Poznasz C++, to C wyda ci sie idealem
Niestety.. Nie poznam.. Jestem niereformowalny, wątek utworzyłem tylko by upewnić się czy rozumiem pewne źródło.
Quote:
Niejaki AL tu zwracal swego czasu uwage na jedna ceche Pascala -
zagniezdzone procedury/funkcje, i ich zmienne.
Procedury maja dostep do zmiennych procedury nadrzednej, co znakomicie
utrudnia implementacje ..
Istotnie, sam kiedyś miałem na tym delikatnego poślizga. Podobnież miał to kolega AG.
Guest
Thu Aug 04, 2016 10:55 am
W dniu czwartek, 4 sierpnia 2016 10:16:41 UTC+2 użytkownik Mateusz Viste napisał:
Quote:
On 04/08/2016 09:40, stchebel@gmail.com wrote:
Japierdole!!! Przepraszam, to nie jest reakcja w Twoją stronę, lecz w stronę developerów C. Nie wiem gdzie zyskujemy na czytelności.. Gwiazdka w lewo, prawo, pośrodku, znaki zapytania gdziebądź, wykrzykniki itd, itp..
Nosz kurwa, wolę w assemblerze mov a,b - przynajmniej wiadomo o co chodzi.
Nie rozumiem dlaczego w takim razie upierasz się przy C. Nie podoba się
- działaj w czymkolwiek innym... Filozoficzne narzekania prowadzą do nikąd.
Mateusz
Przeczytaj główny wątek do końca ze zrozumieniem.Gdzie chłopie ja się upieram przy C? I nie wcinaj się byle gdzie w dyskusję nie wiedząc o co chodzi. Bo to właśnie jest "mondralowanie" prowadzące do nikąd. To coś jak z deklaracją zmiennej w C byle gdzie. Byle gdzie przeczytałeś parę zdań, a co do meritum tematu nie masz bladego pojęcia. Przeczytaj główny wątek !!
Guest
Thu Aug 04, 2016 11:02 am
W dniu czwartek, 4 sierpnia 2016 10:48:34 UTC+2 użytkownik Ghost napisał:
Quote:
Użytkownik napisał w wiadomości grup
dyskusyjnych:9756d847-22a1-444a-b88c-f17ae5805bf4@googlegroups.com...
W dniu czwartek, 4 sierpnia 2016 09:53:22 UTC+2 użytkownik ajt napisał:
Umiejscowienie nie ma żadnego znaczenia, wszystkie trzy przykłady są
równoważne, pominąłeś jeszcze typ*zmienna, to również to samo.
Oczywiście nie można wykluczyć jakiejś egzotycznej implementacji, gdzie
ktoś w ten sposób chciałby nadać inne znaczenia, ale to już nie byłoby C
...
Dzięki za odpowiedź. Chyba nie do końca prawidłowo zadałem pytanie.
Korekta:
1) void Jakaś_Tam_Funkcja(typ* zmienna_1,zmienna_2,....,zmienna_n);
2) void Jakaś_Tam_Funkcja(typ *zmienna_1,zmienna_2,....,zmienna_n);
3) void Jakaś_Tam_Funkcja(typ * zmienna_1,zmienna_2,....,zmienna_n);
Chodzi mi o cały wektor zmiennych. Aha , pominąłem jeszcze to samo jak
wyżej, ale BEZ GWIAZDKI!! Jak to wtedy działa?
I nie masz odruchowego wrażenia, ze
typ* zmienna_1,zmienna_2,....,zmienna_n
oznacza deklaracje n zmiennych każda typu typ*
a
typ *zmienna_1,zmienna_2,....,zmienna_n
oznacza deklaracje zmienna_1 typu typ*, oraz n-1 zmiennych typu typ?
Tymczasem obie deklarację robią to samo, znaczy realizują drugi przypadek,
dlatego należy trzymać gwiazdki przy zmiennych
======
Otóż mam takie odruchowe wrażenie, ale wolę się upewnić. Piszesz, że należy trymać gwiazdki przy zmiennych. Należy, czy trzeba? Przepraszam, moje pytania mogą wydawać się irytujące, ale pytam zupełnie serio. Różne "ciekawe" historie przytrafialy mi się z wszelakimi narzędziami programistycznymi zarówno w hard i soft.
Sebastian BiaĹy
Guest
Thu Aug 04, 2016 11:19 am
On 2016-08-04 08:41, Ghost wrote:
Quote:
int *a, b;
i
int* a, b;
też są równoważne, ale z drugiej ktoś niedoświadczony (choć
niekoniecznie) mógłby wywnioskować, że obie zmienne to wskaźniki.
Dlatego istnieją coding standardy, niektóre w sposób automatyczny
sprawdzane. Zazwyczaj istnieje jawny zakaz deklaracji po przecinku.
C/C++ to język o niezwykłych mozliwościach i miliardzie błedów do
popełnienia. Coding standardy zazwyczaj bazują na doświadczeniu zespołu
z takimi błedami i warto się rozejrzeć jak inni to robią.
Guest
Thu Aug 04, 2016 11:26 am
W dniu czwartek, 4 sierpnia 2016 10:42:55 UTC+2 użytkownik Ghost napisał:
Quote:
Nie wiem gdzie zyskujemy na czytelności..
Programowanie nie jest dla ciebie

Niezależnie od języka.
Jeżeli takie wnioski wyciągasz na podstawie mojego zdania dotyczącego czytelności żródła na podstawie umiejscowienia gwiazdki w lewo/prawo/pośrodku, to zapewne mógłbyś L.. Armstrongowi pytającemu o kształt klucza wiolinowego udzielić porady: muzyka nie jest dla ciebie, niezależnie od instrumentu.
Dam ci radę: Przestań udzielać rad.
Ghost
Guest
Thu Aug 04, 2016 11:26 am
Użytkownik napisał w wiadomości grup
dyskusyjnych:6c4fefdb-84c0-4b03-92e8-ef932f72f322@googlegroups.com...
Quote:
Należy, czy trzeba?
Należy z powodu głupich odruchów. Ale nie ma obowiązku
Ghost
Guest
Thu Aug 04, 2016 11:28 am
Użytkownik napisał w wiadomości grup
dyskusyjnych:596cf112-79ef-4538-a2e7-3702fe04030a@googlegroups.com...
W dniu czwartek, 4 sierpnia 2016 10:42:55 UTC+2 użytkownik Ghost napisał:
Quote:
Nie wiem gdzie zyskujemy na czytelności..
Programowanie nie jest dla ciebie

Niezależnie od języka.
Jeżeli takie wnioski wyciągasz na podstawie mojego zdania dotyczącego
czytelności żródła
tak
Marek
Guest
Thu Aug 04, 2016 4:05 pm
On Thu, 4 Aug 2016 02:26:14 -0700 (PDT), stchebel@gmail.com wrote:
Quote:
Dam ci radę: Przestań udzielać rad.
Akurat miał rację, z Twoich komentarzy faktycznie można wyciągać taki
wniosek. Spróbuj zająć się czymś innym, myślę że jest sporo innych
zajęć, które nie będą w Tobie wywoływać tyle frustracji.
--
Marek
Ghost
Guest
Fri Aug 05, 2016 9:05 am
Użytkownik "Grzegorz Niemirowski" napisał w wiadomości grup
dyskusyjnych:nnv3av$4m9$1@node1.news.atman.pl...
stchebel@gmail.com <stchebel@gmail.com> napisał(a):
Quote:
Otóż mam takie odruchowe wrażenie, ale wolę się upewnić. Piszesz, że
należy trymać gwiazdki przy zmiennych. Należy, czy trzeba? Przepraszam,
moje pytania mogą wydawać się irytujące, ale pytam zupełnie serio. Różne
"ciekawe" historie przytrafialy mi się z wszelakimi narzędziami
programistycznymi zarówno w hard i soft.
Spacje przy gwiazdkach nie mają znaczenia dla kompilatora. Natomiast w
przypadku
int *a, b;
lepiej nie robić odstępu po gwiazdce, bo dzięki temu lepiej widać, że a
będzie wskaźnikiem, a b nie. To tylko pomoc dla programisty i chyba nie ma
innych przypadków gdzie położenie gwiazdki coś zmienia.
W c? Np. w przypadku dzielenia.
Grzegorz Niemirowski
Guest
Fri Aug 05, 2016 5:19 pm
Quote:
Spacje przy gwiazdkach nie mają znaczenia dla kompilatora. Natomiast w
przypadku
int *a, b;
lepiej nie robić odstępu po gwiazdce, bo dzięki temu lepiej widać, że a
będzie wskaźnikiem, a b nie. To tylko pomoc dla programisty i chyba
nie ma innych przypadków gdzie położenie gwiazdki coś zmienia.
W c? Np. w przypadku dzielenia.
Poproszę przykład.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express:
http://www.grzegorz.net/oe/
Uptime: 9 days, 19 hours, 55 minutes and 53 seconds
Ghost
Guest
Fri Aug 05, 2016 6:25 pm
Użytkownik "Grzegorz Niemirowski" napisał w wiadomości grup
dyskusyjnych:no2hr7$558$1@node2.news.atman.pl...
Quote:
Spacje przy gwiazdkach nie mają znaczenia dla kompilatora. Natomiast w
przypadku
int *a, b;
lepiej nie robić odstępu po gwiazdce, bo dzięki temu lepiej widać, że a
będzie wskaźnikiem, a b nie. To tylko pomoc dla programisty i chyba
nie ma innych przypadków gdzie położenie gwiazdki coś zmienia.
W c? Np. w przypadku dzielenia.
Poproszę przykład.
dla deklaracji
int *y;
a=4 /* y;
vs
a=4 / *y;
widać różnicę?
Goto page Previous 1, 2, 3, 4 Next