zprava += znak;
to znamená
zprava + zprava = znak; ?
No, podle knihy je "zprava += znak"
ve významu "zprava = zprava + znak"
Ale říkal jsem si, zda to není překlep, když ten zkrácený zápis je vlastně obráceně, protože "zprava = zprava + znak" bych pokrátil na "zprava =+ znak"...
mutagen: já nepochybuji, jen mám obavu, zda nejde o překlep. A navíc, když se zeptám na to, proč to tak je, tak si říkám, zda někdo není seznámen s původem tohoto způsobu syntaxe, a nepodělí se o tuto informaci.
Pokud si nejsem jistý syntaxí, hledám jak pravidla fungují. V případě += se jedná o operátory. Tak do Google dám "C# operátory" nebo anglicky operators a nechám si najít. Najdeš třeba https://docs.microsoft.com/cs-cz/dotnet/csharp/language-reference/operators/ a postupně se proklikáš ke sčítání a odčítání a nakonec na stránce narazíš na Složené přiřazení". Někdy je potřeba projít více výsledků vyhledávání, jindy změnit klíčová slova pro vyhledávání. Jsem si myslel, že gůůglit umí malý děcko ...
Druhý postup je "pokus omyl". Prostě to zkusím a když překladač napíše "Syntax error" tak je to špatně.
hu
#1 Montezo
Pokud ten výklad v knize nechápal obyčejný člověk, tak by to nejdřív zkusil, než ze sebe bude dělat šaška na diskuzích.
int i = 8, j=2;
pokud napíšeš i=+j; tak překladač napíše, že je to blbě! >> TEKHLE NE!
pokud napíšeš i+=j; tak ti to vezme, ty testem zjistíš, že i je 10; >> TAKHLE JE TO OK! ZAPAMATUJU SI, ŽE SE TO DĚLÁ TAKTO.
Funguje to stejně jako když napíšeš i = i + j; jen je to kratší.
Jo, já číst umí, ale logičtější by bylo " i = i + j" zkrátit na "i = + j" pokud by princip onoho zjednodušení vyplíval z faktu, že jen vynecháš to i, aby sis ušetřil jeden znak.
Ačkoliv, když nad tím tak dumám, tak je to myšlený - to " i += j" - tak, že případ "i = +j" by si mohl kompiler chybně vyložit jako snaho do proměnné "i" přiřadit "+j" ... když udělám i += j, je ihned i kompileru jasné, že NEJDE o snahu do proměnné i cokoliv vecpat...
#8 Montezo
Už jsem ti to jednou psal, programovat ještě neumíš a už by jsi chtěl vyvíjet programovací jazyk. Respektive pořád řešíš, že programovací jazyk je špatně napsaný.
Někdo to vymyslel tak jak to je, a nejspíš k tomu měl důvod (nevím ve které prog. jazyce se to objevilo poprvé, ale tohle se používalo dřív, než ses narodil). (Nejspíš je to proto, že mínus za rovnítkem může upravovat polaritu následující hodnoty.)
Tak se tím řiď, nebo si napiš vlastní programovací jazyk, ve kterém to dáš obráceně.
Může to být způsob jak předejít chybě. Dejme tomu, že bych chtěl napsat a=i+j; a že dělám překlepy často, napsal bych a=+j; Kdyby byl operátor definován podle tvojí logiky, bylo by to syntakticky správně, ale chovalo by se to jinak, než chci a já bych dlouze hledal, kde je chyba. Pokud je operátor definován tak jak je, zápis a=+j; je syntakticky špatně, překladač napíše chybu včetně čísla řádku, kde je. Hledání a oprava chyby pak nedá moc práce.
Další důvod může být problém při zpracování a += ++i; překladačem. Nakupení + by mohlo být problém vyhodnoti. Měj na paměti, že tyhle věci vznikaly v době, kdy počítač měl systémové prostředky a výkon menší než tvůj chytrý telefon a překladače taky nebyly tak sofistikované (umělá inteligence byla spíš sci-fi). Programátoři očekávají, že tyhle starý osvědčený věci budou fungovat a tak nikoho nenapadlo to u novějších verzí jazyka měnit. Novější jazyky to pak často přebírají aby se programátoři nemuseli přeučit a neměli v tom chaos.
hu
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku