A widzisz, nie trzeba pisać zawile, można bardzo prosto. W każdym razie jest ogromny wybór stylu kodowania, czego w innych (hmm...przemilcze ;-) ) jezykach nie ma.
Poza tym kompilatorowi czasami dobrze służy taka _papka_. Oczywiście dobrze ze względu na wielkość/szybkość kodu wynikowego. Można wpływać na efekt pracy kompilatora - czyż to nie piękne ;-)
Mniłego wieczoru i....czekam ;-) __ Pzd, Irek.N.
Didn't find your answer? Ask the community — no account required.
B
BLE_Maciek
Mon, 27 Oct 2003 18:48:07 +0100 jednostka biologiczna o nazwie Ireneusz Niemczyk snipped-for-privacy@powszukaj.w.archiwum> wyslala do portu 119 jednego z serwerow news nastepujace dane:
No przepraszam, ale IMHO napsanie np for (n=0;n<10;n++)costam();
da ten sam kod wynikowy co for (n=0;n<10;n++) { costam(); }
Tak samo jak napisanie:
#include<stdio.h>
#define R return #define P printf #define F for #define I if #define V void #define K int #define C char
Da taki sam efekt jak w postaci "rozwinietej" :-))) BTW: Ten program powyzej sie nawet kompiluje i dziala :-)))
M
Marcin E. Hamerla
BLE_Maciek napisal(a):
Przedpiscy raczej chodzilo o instrukcje typu: ?:, ktore moga odrzucac nieprzyzwyczajonych, a ktore upraszczaja czesto zycie.
B
BLE_Maciek
Mon, 27 Oct 2003 19:13:20 +0100 jednostka biologiczna o nazwie Marcin E. Hamerla snipped-for-privacy@Xpro.Xonet.Xpl.remove_X> wyslala do portu 119 jednego z serwerow news nastepujace dane:
No tak ale uzycie "krotkiego" if'a (?:) nie daje chyba raczej krotszego kodu wynikowego niz zwykly if ? To by bylo nielogiczne.
T
Tomasz Gumny
Wrecz przeciwnie! Uzycie wyrazenia (?:) dawalo dluzszy kod *) niz instrukcja (if), ze nie wspomne o instrukcji wyboru (switch), która - jesli nie mam kiludziesieciu wariantów - z zasady wymieniam na szereg instrukcji warunkowych (if),
*) Dotyczy kompilatorów C na uC, których uzywam/uzywalem. TG
B
BLE_Maciek
Mon, 27 Oct 2003 19:28:36 +0100 jednostka biologiczna o nazwie "Tomasz Gumny" snipped-for-privacy@idn.org.pl> wyslala do portu 119 jednego z serwerow news nastepujace dane:
Rany, co to za tragiczne kompilatory byly ? Mam nadzieje ze nie gcc ?
J
Jan Dubiec
On Mon, 27 Oct 2003 16:21:04 +0100, BLE_Maciek <i80c586@cyberspace_NO_SPAM_.org> wrote: [.....]
Trzeba sobie tylko ewentualnie dobrać ulubioną szerokość tabulatora i sposób położenia nawiasów grupujących instrukcje.
A tam od razu lubić. Znać trzeba.
Znam lepsze języki (IMO oczywiście), chociaż niezbyt pasują do zastosowań embedded. Np. Eiffel.
Regards, /J.D.
J
Jan Dubiec
Pewnie dlatego, że w przeciwieństwie do zwykłego if-a, wyrażenie ?: zwraca wartość wyrażenia które zostało wykonane w wyniku sprawdzenia warunku. ?: raczej nie jest przeznaczone do sterowania "przepływem sterowania". ;-)
Zgadza się. Ponadto ciąg if-ów jest *troszeczkę* szybszy.
Na pecetach, też tak jest. Na pewno pod gcc, cl.exe nie sprawdzałem, ale pewnie jest tak samo.
Regards, /J.D.
J
jerry1111
U mnie daje to samo - ale wygodniej mi ?: stosowac w przypisaniach :-)
IMHO jak dobry kompilator i wartosci case 'poukladane' to powinien zrobic tablice skokow. No, ale uC to uC i nie zawsze mozna...
B
BLE_Maciek
27 Oct 2003 20:51:07 +0100 jednostka biologiczna o nazwie Jan Dubiec snipped-for-privacy@slackware.pl wyslala do portu 119 jednego z serwerow news nastepujace dane:
No tak wykopsanej konstrukcji to nie znalem :-) I nie stosowalbym :-)))
Nie uzywam tabulatorow, jak widziales w mojej wersji tej funkcji, uzywam spacji. Co do nawiasow to preferuje tak:
for (n=0;n<50;n++) { costam(); costam_jeszcze(); } Jest bardziej przejrzyscie :-P
J
Jan Dubiec
Ale to jest właśnie typowy sposób użycia tej instrukcji/konstrukcji. :-)
Regards, /J.D.
J
Janusz_k
Marcin E. Hamerla snipped-for-privacy@Xpro.Xonet.Xpl.remove_X> napisal(a):
A dokladnie np cos takiego: (command&0x80)?(SDA=1):(SDA=0); to juz sie domyslam ze robi za if (command&0x80)=true to sda=1 a false to sda=0
ale co to robi? command<<=1;
albo to? (data_&0x80)?(SDA=1):(SDA=0); data_<<=1;SCL=1;SCL=0;} CSPOT=1; tutaj domyslam sie ze & to AND a ? co to jest?
'Tresciwe' te wyrazenia ale strasznie to pokrecone i trudne do analizy.
Pozdr Janusz
J
Jan Dubiec
Jest mniej więcej tak jak napisałeś, chociaż typowo powyższą instrukcję zapisuje się tak: SDA = (command & 0x80) ? 1 : 0; A w zasadzie, aby było bardziej czytelnie, to powinno być tak: SDA = ((command & 0x80) != 0) ? 1 : 0; Czyli jeśli wartość wyrażenia w nawiasach jest różna od 0, to przypisz zmiennej SDA wartość 1, a w przeciwnym wypadku przypisz wartość 0.
To samo co: command = command << 1; czyli przesuwa bity w zmiennej command o jedną pozycję w lewo
A tutaj masz w jednym wierszu zapisanych 5 instrukcji. :-) sposób działania pierwszej i drugiej podałem wyżej.
Kwestia przyzwyczajenia. IMO to lepsze niż grzebanie się w opcodach assemblera, w szczególności assemblera uC który dopiero poznajesz. Weź pierwszą z brzegu książkę do C i szystko stanie się jasne. A jak chcesz zobaczyć pokręcone i trudne do analizy wyrażenia, to poszukaj w Sieci informacji na temat języka o wdzięcznej nazwie Brainfuck. :-)
Regards, /J.D.
B
BLE_Maciek
28 Oct 2003 06:51:37 +0100 jednostka biologiczna o nazwie Jan Dubiec snipped-for-privacy@slackware.pl wyslala do portu 119 jednego z serwerow news nastepujace dane:
Jednak wolalbym if'a :-)
D
DJ MuNiO
a jaka polecacie ksiazke do nauki C ?
K
Kaldachar
Użytkownik DJ MuNiO napisał:
?? Może elegancko jest założyć własny temat ??
J
J.F.
To akurat jest czyste i podstawowe C.
<< jest operatorem przesuniecia bitowego - tu lewo. Czyli np 2<<3 wynosi 16.
Konstrukcja: A operator= B jest skroconym zapisem od A = A operator B Zazwyczaj sluzy do np a+=2.
J.
P
Piotr Wyderski
LOL, troll mode on? ;-)))
Pozdrawiam Piotr Wyderski
B
BLE_Maciek
Wed, 29 Oct 2003 19:19:22 +0100 jednostka biologiczna o nazwie "Piotr Wyderski" snipped-for-privacy@ll.replies.to.the.group> wyslala do portu
119 jednego z serwerow news nastepujace dane:
Flame mode on ;-))
B
BLE_Maciek
Tue, 28 Oct 2003 20:47:16 +0100 jednostka biologiczna o nazwie "DJ MuNiO" snipped-for-privacy@wp.pl wyslala do portu 119 jednego z serwerow news nastepujace dane:
Ja zaczynalem od ksiazki Andrzeja Kloca tytul zdaje sie "Podstawy jezyka C" czy cos takiego. A potem to juz poszlo ... :-)
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.