C přísně kontroluje, co je uloženo v paměti. Netuší. Musíte přesně uvést, jaká data ukládáte. To není jen vybíravost. To ovlivňuje, jak váš program funguje, kolik paměti používá a zda jsou vaše výpočty správné nebo nesmyslné.
Standardní typy proměnných
V C jsou tři standardní typy proměnných.
Celé číslo: int
Toto je 4bajtové celé číslo. Pracuje s celými čísly.
Číslo s pohyblivou řádovou čárkou: float
Toto je 4bajtové číslo s plovoucí desetinnou čárkou. Pracuje s desetinnými zlomky.
Postava: char
Toto je jeden bajtový znak. Například „a“ nebo „3“. Řetězec v C je prostě pole takových znaků.
Pak jsou odvozené typy. Používají se, když tři standardní typy nestačí.
double: 8bajtové číslo s plovoucí desetinnou čárkou. Vyšší přesnost.short: 2bajtové celé číslo. Méně paměti, menší rozsah hodnot.unsigned shortnebounsigned int: Tyto typy fungují pouze s kladnými celými čísly. Žádný náznak. Pokud potřebujete sledovat počty obyvatel nebo velikosti dávek, je to často správná volba.
Operátory a priorita operátorů
Operátoři v C vypadají povědomě.
- “+” dodatek
-odčítání- Dělení
/ *násobení%zbytek dělení
S dělením ale opatrně. Operátor / provede celočíselné dělení, pokud jsou oba operandy celá čísla. Jinak se provede dělení s plovoucí desetinnou čárkou.
Podívejte se na tento kód:
Vydává hodnotu s plovoucí desetinnou čárkou, protože „a“ je deklarováno jako typ „float“. Ale hodnota a bude 3,0. Proč? Protože kód nejprve provedl celočíselné dělení. 10 děleno 3 je 3. Výsledek je 3. Tato 3 je poté převedena na 3,0, když je uložena v “a”. Přesnost byla ztracena dříve, než hodnota vůbec vstoupila do proměnné.
Priorita operátorů v jazyce C se řídí standardními pravidly. Násobení a dělení se provádí před sčítáním a odčítáním.
Výsledek výrazu 5+3*4 je 17. Ne 32. Operátor * má vyšší prioritu než +. Toto můžete přepsat pomocí závorek. (5+3)*4 se rovná 32. Nejprve se vypočítá 5+3.
Priorita bude později matoucí. Když se objeví ukazatele, věci se zkomplikují. Ale zatím si pamatujte: násobte a rozdělte před sčítáním a odečítáním.
Typové odlitky
C umožňuje převádět typy za běhu. To se často provádí pomocí ukazatelů. Stane se to také automaticky při přiřazení k určitým typům.
Ve výše uvedeném příkladu byl výsledek celého čísla 10/3 automaticky převeden na float. Ale co když potřebujete zlomkovou část?
Přetypování typu se provádí umístěním názvu typu do závorek před hodnotu.
Nahraďte a=10/3; za a=(float)10/3;.
Nyní se „a“ rovná 3,33333. Číslo 10 je převedeno na číslo s pohyblivou řádovou čárkou před dělením. K dělení dochází v kontextu čísel s pohyblivou řádovou čárkou. Výsledek si zachová svá desetinná místa.
typedef
Pojmenované uživatelem definované typy můžete deklarovat v C pomocí operátoru typedef. To je běžné v C kódu.
To vám umožní deklarovat booleovské typy. Staré standardy C nemají vestavěný typ bool, takže toto je řešení.
Pokud se vám nelíbí slovo “float”, můžete napsat:
Potom později:
Umístěte příkazy typedef kamkoli do programu. Jen se ujistěte, že jsou před prvním použitím.
Struktury
Strukturuje proměnné skupiny C do jednoho balíčku.
Pokaždé, když chcete deklarovat strukturu typu rec, musíte napsat struct rec. Je snadné zapomenout. Pokud vynecháte slovo struct, kompilátor vyvolá chyby.
Kód můžete zkrátit:
Zde jsou deklarace typu a proměnná r deklarovány ve stejném příkazu.
Nebo použijte typedef pro název struktury. Pokud vás nebaví pokaždé psát struct rec r :
Poté deklarujte položky zadáním:
Odkazujte na pole s tečkou. r.a = 5;.
Pole
Pole se deklarují zadáním velikosti po normální deklaraci.
Pole jsou souvislé bloky paměti. Přístup k indexu mimo rozsah je nedefinované chování. Program může skončit s chybou. Data mohou být poškozena. Může se zdát, že vše funguje, až to najednou nefunguje.
Zvyšování a snižování
C má zkratky pro běžné operace.
- „i = i + 1;“ se změní na „i++;“.
- “i = i – 1;” se změní na “i–;”.
- „i = i + 3;“ se změní na „i += 3;“.
i = i * j;se změní nai *= j;
To není jen syntaktický cukr. Často jsou kompilovány do efektivnějšího strojového kódu. Použijte je.
C Chyby, kterým je třeba se vyhnout
Operátor / se dvěma celými čísly je past. Zahodí desetinnou část. Před dělením vždy zkontrolujte své typy. Pokud potřebujete přesnost, přetypujte nejprve jeden z operandů na float nebo double.
Myslete na to pokaždé, když použijete tento operátor. Jinak budou vaše čísla špatná. A ladění problémů zahrnujících celočíselné dělení je utrpení.
Zkuste to sami
- Experimentujte s litím typu. Zkuste
int,char,float. Podívejte se, co se stane, když je smícháte. - Vytvořte řadu záznamů. Napište kód pro seřazení tohoto pole podle jednoho celočíselného pole. To vás naučí, jak pracovat s ukazateli, rozložením paměti a řízením toku.
Na detailech záleží v C. Chybí jeden typ a celý program se přeruší. Udělejte to správně a bude to fungovat rychle.


























