Jednoduché datové typy Konstanty, proměnné, operátory
Konstanty Celočíselné a racionální konstanty Znakové konstanty Řetězce 2.345; 0.87; .341; 1E-5; 2,343E91 Celočíselné konstanty Desítkový nebo oktalový nebo hexadecimální zápis 987 01733 0x3DB Znakové konstanty ‘a’ ‘*’ ‘\’’ ‘\0x20’ ‘\n’ ‘\\’ \ – escape character – změna významu následujícího znaku za \ Řetězce “toto je řetězec“ “toto je“ “také řetězec“ “řekl: \“Ahoj!\““ Jaromír Gloc, GPJP
Číselné datové typy I Datový typ určuje Celočíselné typy množinu hodnot, kterých může proměnná nabývat množinu operací, které nad ním mohou být prováděny Celočíselné typy se znaménkem: kladná i záporná čísla bez znaménka: pouze nezáporná <prefix> char <prefix> short int (stačí short) <prefix> int <prefix> long int (stačí long) <prefix>může být prázdný, signed nebo unsigned unsigned int se zkracuje na unsigned Jaromír Gloc, GPJP
Číselné datové typy II Reálné datové typy Pro datové typy vždy platí Float, double, long double Pro datové typy vždy platí sizeof (char) = 1 B sizeof(short) ≤ sizeof(int) ≤ sizeof(long) sizeof(int) = sizeof(unsigned int) sizeof(float) ≤ sizeof(double) ≤ sizeof(long double) Jaromír Gloc, GPJP
Proměnné v C Každá proměnná musí být před použitím deklarována definice udává jméno a typ proměnné, přidělí paměť char c; int i; float f; int i1, i2; součástí definice může být inicializace int i = 1; /* inicializace */ int i1 = 10, i2 = 20; Jaromír Gloc, GPJP
Matematické operátory Standardní zápis +, -, *, / a*b b-a a+b a/b operátor / znamená buď klasické (reálné) dělení, nebo celočíselné dělení (se zbytkem) int / int – celočíselné dělení Jinak – reálné dělení Operátor % vrací zbytek po celočíselném dělení int a=5,b=3; a / b -dá výsledek 1 a % b -dá výsledek 2 Jaromír Gloc, GPJP
Operátor přiřazení operátor přiřazení = l-hodnota - výraz, který může stát na levé straně přiřazení, např. proměnná (představuje adresu) Přiřazení: l-hodnota = výraz i = j * 2 + 5 Přiřazení je výraz, jehož hodnotou je hodnota na pravé straně Přiřazení se stává příkazem, je-li ukončeno středníkem přiřazovací příkaz i = j * 2 + 5; c = a = b = 2; vyhodnocuje se jako c = (a = (b = 2)); Jaromír Gloc, GPJP
Unární operátory Unární + a unární – Inkrement a dekrement Př: Standardní význam +a -b Inkrement a dekrement ++ -- Buď jako prefix, nebo jako suffix ++l-hodnota inkrementace před použitím l-hodnota++ inkrementace po použití Př: int i=5, j=3, k; i++; //i bude 6 j = ++i; //i bude 7, j bude 7 j = i++; //i bude 8, j bude 7 k = --j + 2; //j bude 6, k bude 8 Jaromír Gloc, GPJP
Speciální operátory přiřazení Místo zápisu: l-hodnota = l-hodnota operátor výraz můžeme použít: L-hodnota operátor= výraz Př: a+=5 // a= a+5 b/=2 // b= b/2 i%=4 // i=i%4 Jaromír Gloc, GPJP
Procvičení I Určete konečnou hodnotu proměnných a, b, c int a=2,b=-1,c=3; a-=b; b=c++; c%=a; Co nejúsporněji napište posloupnost příkazů, kterými prohodíte obsah proměnných x a y, bez toho, že byste použili jinou proměnnou. Jaromír Gloc, GPJP
Výsledky Př. 1 Př. 2 a bude 3 b bude 3 c bude 1 a+=b; b=a-b; a-=b; Jaromír Gloc, GPJP