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 ;-)
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
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.
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 ?
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.
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
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. :-)
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:
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 ... :-)
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.