Vstup/Výstup a Operátory , výrazy
Vstup/Výstup
Kde je uveden popis funkcí pro vstup a výstup a jak se připojí do programu?
V hlavičkovém souboru stdio.h a připojí se pomocí direktivy
#include < stdio.h>
Jaká funkce realizuje formátovaný vstup hodnot– uveďte příklad!
scanf(“formatove specifikace“,seznam adres promennych);
Př.:
scanf("%f %c %f",&a,&c,&b);
Před název každé proměnné píšeme znak & ve významu adresní operátor.
Do první proměnné uložíme hodnotu podle prvního formátu, do druhé podle druhého formátu, atd.
Jaká funkce realizuje formátovaný výstup hodnot– uveďte příklad!
printf("formatove specifikace",seznam promennych);
Př.:
printf("a=%f c=%c b=%f", a, c, b);
Jaké znáte formátové specifikace?
Formátová specifikace určuje v jakém tvaru bude hodnota proměnné vypisována.
Typ Klíčové slovo Formátová specifikace
Znak char %c
Celé číslo se znaménkem int %d %x %o
Desetinné číslo float %f
Desetinné číslo s dvojnásobnou přesností double %lf
Bez hodnoty void
Celá čísla můžeme číst a vypisovat jako desítková (formátem %d), jako šestnáctková (formátem %x) nebo jako osmičková (formátem %o).
Příklady čtení a výpisu celých čísel v různých formátech jsou uvedeny za otázkou 21.
Kolik formátových specifikací musí funkce scanf (printf) obsahovat?
Počet formátových specifikací se musí rovnat počtu načítaných nebo vypisovaných proměnných.
Výpis hodnoty proměnné
Napište program, který deklaruje jednu celočíselnou proměnnou pojmenovanou num.
Přiřaďte této proměnné hodnotu 1000 a pak pomocí jednoho příkazu printf vypište num na obrazovku takto:
A) Hodnota num je 1000
B) 1000 je hodnota num
#include <stdio.h>
#include <conio.h>
main(){
int num;
num=1000;
printf("Hodnota num je %d\n",num);
printf("%d je hodnota num je\n",num);
}
Př.: Zadání a výpis různých typů proměnných
#include <stdio.h>
int main(void)
{
int a;
char c;
float f;
printf("Zadej cele cislo: ");
scanf("%d",&a);fflush(stdin);
printf("Zadej racionalni cislo: ");
scanf("%f",&f);fflush(stdin);
printf("Zadej znak: ");
scanf("%c",&c);fflush(stdin);
printf("Zadal jsi: %d %f %c\n",a,f,c);
return 0;
}
Dobré je po každém čtení použít funkci fflush, která vyprázdní vstupní zásobník.
Př.: Jednoduchá kalkulačka: zadání dvou čísel a výpis všech arit. operací
#include <stdio.h>
int main(void)
{
float a,b;
printf("Zadej dve cisla: ");
scanf("%f %f",&a,&b);
printf("soucet: %.2f\n",a+b);
printf("rozdil: %.2f\n",a-b);
printf("soucin: %.2f\n",a*b);
printf("podil: %.2f\n",a/b);
return 0;
}
Formátová specifikace %.2f znamená, že racionální číslo se vypíše na dvě desetinná místa.
Př.: Výpis čísla, zadaného desítkově šestnáctkově a osmičkově
#include <stdio.h>
int main(void)
{
int a;
printf("Zadej cele cislo: ");
scanf("%d",&a);
printf("setnactkove: %X\n",a);
printf("osmickove: %o\n",a);
return 0;
}
Pro šestnáctkový výpis je použita formátová specifikace %X a pro osmičkový výpis %o.
Př.: Výpis čísla, zadaného šestnáctkově desítkově a osmičkově
#include <stdio.h>
int main(void)
{
int a;
printf("Zadej cele cislo: ");
scanf("%x",&a);
printf("desitkove: %d\n",a);
printf("osmickove: %o\n",a);
return 0;
}
Př.: Výpis čísla, zadaného šestnáctkově desítkově a osmičkově - zacykleno
#include <stdio.h>
int main(void)
{
int a;
while(1){
printf("Zadej cele cislo: ");
scanf("%x",&a);
if(a==0)break;
printf("desitkove: %d\n",a);
printf("osmickove: %o\n",a);
}
return 0;
}
Modifikátory
Pomocí modifikátorů lze upravit základní datové typy.
long použitelné na int i double
short použitelné na int
signed použitelné na celé číslo se znaménkem
unsigned použitelné na celé číslo se znaménkem
Všechny datové typy definované normou ANSI C
Různé datové typy zabírají různé místo v paměti.
ANSI – American National Standard Institute
Typická velikost Minimální rozsah
v bitech
char -127 až 127
unsigned char 8 0 až 255
signed char 8 -127 až 127
int 16 nebo 32 -32 767 až 32 767
unsigned int 16 nebo 32 0 až 65535
signed int 16 nebo 32 , stejné jako int
short int 16 stejné jako int
unsigned short int 16 0 až 65 535
signed short int 16 stejné jako int
long int 32 -2 147 483 647 až
2 147 483 647
signed long int stejné jako long int
32
unsigned long int 32 0 až 4 294 967 295
float 32 přesnost na 6 číslic
double 64 přesnost na 10 číslic
long double 80 přesnost na 10 číslic
Specifikátory formátu funkce printf()
Kód Formát %c znak
%d desítkové celé číslo se znaménkem
%i desítkové celé číslo se znaménkem
%e semilogaritmický tvar s malým 'e' (vědecká notace)
%E semilogaritmický tvar s velkým 'E' (vědecká notace)
%f desítkové číslo s pohyblivou řádovou čárkou
%g použije se kratší z formátů %e nebo %f
%G použije se kratší z formátů %E nebo %f %o osmičkové číslo bez znaménka
%s řetězec znaků
%u desítkové celé číslo bez znaménka
%x šestnáctkové celé číslo bez znaménka (malá písmena)
%X šestnáctkové celé číslo bez znaménka (velká písmena)
%p zobrazí ukazatel
%n přidružený argument je ukazatel na proměnnou typu int, do které se uloží počet dosud vypsaných znaků
%% vypíše znak %
%hd short
%ld long int
%lu unsigned long int
%lf double
%Lf long double
Stanovení počtu bytů a maximálních a minimálních hodnot pro jednotlivé datové typy:
#include <stdio.h>
#include <conio.h>
#include <limits.h>
#include <float.h>
int main(){
printf("char: %d\n",sizeof(char));
printf("int : %d\n",sizeof(int));
printf("short int: %d\n",sizeof(short int));
printf("long int: %d\n",sizeof(long int));
printf("float: %d\n",sizeof(float));
printf("double: %d\n",sizeof(double));
printf("CHAR_BIT: %d\n",CHAR_BIT);
printf("CHAR_MAX: %d\n",CHAR_MAX);
printf("CHAR_MIN: %d\n",CHAR_MIN);
printf("SHRT_MAX: %d\n",SHRT_MAX);
printf("SHRT_MIN: %d\n",SHRT_MIN);
printf("USHRT_MAX: %d\n",USHRT_MAX);
printf("INT_MAX: %d\n",INT_MAX);
printf("INT_MIN: %d\n",INT_MIN);
printf("UINT_MAX: %.0f\n",(float)UINT_MAX);
printf("LONG_MAX: %d\n",LONG_MAX);
printf("LONG_MIN: %d\n",LONG_MIN);
printf("ULONG_MAX: %.0f\n",(float)ULONG_MAX);
printf("FLT_MIN: %e\n",FLT_MIN);
printf("FLT_MAX: %e\n",FLT_MAX);
printf("FLT_MANT_DIG: %d\n",FLT_MANT_DIG);
printf("DBL_MAX: %e\n",DBL_MAX);
printf("DBL_MIN: %e\n",DBL_MIN);
printf("DBL_MANT_DIG: %d\n",DBL_MANT_DIG);
printf("LDBL_MAX: %e\n",LDBL_MAX);
printf("LDBL_MIN: %e\n",LDBL_MIN);
printf("LDBL_MANT_DIG: %d\n",LDBL_MANT_DIG);
return 0;
}
char: 1
int : 4
short int: 2
long int: 4
float: 4
double: 8
long double: 8
INT_MAX: 2147483647
INT_MIN: -2147483648
UINT_MAX: 4294967296
LONG_MAX: 2147483647
LONG_MIN: -2147483648
ULONG_MAX: 4294967296
FLT_MIN: 1.175494e-038
FLT_MAX: 3.402823e+038
FLT_MANT_DIG: 24
DBL_MAX: 1.797693e+308
DBL_MIN: 2.225074e-308
DBL_MANT_DIG: 53
LDBL_MAX: 1.797693e+308
LDBL_MIN: 2.225074e-308
LDBL_MANT_DIG: 53
1. Nechcete-li specifikovat minimální šířku pole, můžete přesto specifikovat přesnost. Stačí dát před hodnotu přesnosti tečku, jak ukazuje následující program:
#include <stdio.h>
int main (void){
printf("%.5d\n", 10);
printf("$%.2f\n", 99.95);
printf("%.10s", "Ne všechno z tohoto řetězce se vytiskne\n");
return 0;
}
Výpis z tohoto programu vypadá takto:
00010
$99.95
Ne všechno
#include <stdio.h>
int main(void){
int i;
printf ( "%d %f\n%n", 100, 123.23, &i) ;
printf("Dosud bylo vypsáno %d znaků", i);
return 0;
}
Jeho výstup vypadá takto:
100 123.230000
Dosud bylo vypsáno 15 znaků
Patnáctý znak je "nový řádek" .
Zadání:
1. Napište program, který vypisuje tabulku čísel. Každý řádek obsahuje číslo a jeho druhou a třetí mocninu. Tabulka začíná číslem 2 a končí 100. Zarovnejte sloupce zleva.
2. Jak byste vypsali tento řádek pomocí funkce printf( )?
Sleva: 40 % původní ceny
3. Ukažte, jak zobrazit číslo 1023.03 tak, aby se vypisovala jen dvě desetinná místa.
Příklady:
1) Co se vypíše?
int i=6,j=5;
printf( "Soucet je %d" , i + j ) ;
vypíše: Soucet je 11
2) printf ( "Pracovali na 100%%" ) ;
vypíše: Pracovali na 100%
neboť pro výpis znaku "%." je nutné tento znak zdvojit
3) printf ( "Součet je %d\tSoučin je %d\n" , i + j , i * j ) ;
vypíše: Soucet je 11 Soucin je 28 a odřádkuje
4) printf ( "\007Chyba, pokus o deleni nulou. \n" ) ;
pískne a vypíše: Chyba, pokus o deleni nulou. a odřádkuje
5) printf ( "Toto je \ "backslash\ " : ' \\' \n" ) ;
vypíše: Toto je "backslash" : ' \' a odřádkuje
Proto se při tisku používají často pouze apostrofy místo uvozovek, neboť s apostrofy nejsou žádné problémy.
6) printf ( "Toto je ' backslash' . ' \\' \n" ) ;
vypíše: Toto j e 'backslash' . ' \' a odřádkuje
Příklady:
printf( "Znak ' %c' ma ASCII kod %d (%XH)\n" , c, c, c) ;
vypíše: Znak ' A' ma ASCII kod 65 (41H)
2. printf ( "Znak ''%c ma ASCII kod %d (%XH) \n" ,´*´,´*´,´*´);
vypíše: Znak '*' ma ASCII kod 42 (2AH)
3) printf( "Je presne %2d:%2d\n" , hodiny, minuty) ; vypíše např.: Je presne 1:12
nebo např.: Je presne 13: 3
protože počet cifer, který se bude tisknout se dá přímo určit
4) printf ( "Za pivo jsme utratili : %6.2f Kcs . \n" , pocet * cena_piva);
vypíše: Za pivo jsme utratili : 13 . 60 Kcs .
protože 6. 2 znamená, že reálné číslo bude vytištěno na 6 znaků a z nich budou dva za desetinou tečkou a jeden je desetinná tečka
printf( "Kolik stalo %s pivo?\n" , " jedno" ) ;
vypíše: Kolik stalo jedno pivo?
Cvičení:
1) Napište program, který vypíše přesně následující text:
James Bond \ "Agent 007" \ # 150% zaruka # /
Spol. s rucenim neomezenym
Řešení:
printf("James Bond \\ \"Agent 007\" \\ \# 150%% zaruka \# \n\
Spol. s rucenim neomezenym\n");
2) Napište program, který přečte znak a vypíše znak s ASCII hodnotou o jednu vyšší, např.:
vstup : A
výstup : B (ASCII 66)
3) Napište program, který přečte celé dekadické číslo (v rozsahu 0 až 255 a vypíše jeho hexadecimální hodnotu dvouznakově, např.:
vstup : 127
výstup : 7Fh
4) Napište program, který připočítává 25% daň, např.:
vstup : Zadejte cenu bez dane: 100
výstup : Prodejní cena s dani (25%) : 125
5) Napište program, který vypočte obsah obdélníka, např.:
vstup : Zadejte délku a šířku : 5 4
výstup : Obdélník o délce 5 a šířce 4 má obsah 20
6) jsou-li dány definice: int a = 2 , b = 2 , c = 1, d = 0 , e = 4; pak napište programy, které vypíší hodnoty následujících výrazů a správnost zkontrolujte vlastním výpočtem.
a) a++ / ++c * --e
b) --b * c++ - a
c)-b - --c
d) ++a - --e
e) e / --a * b++/ c++
f) a%= b - d - 1 + e / 2
7) Napište program, který přečte reálné číslo a vypíše jeho celou část. Zkuste využít více způsobů získání celé části.
8) Napište program, který přečte tři velká písmena a vypíše je jako tři malá písmena.
9) Napište program, který přečte tři malá písmena a vypíše je jako tři velká písmena v obráceném pořadí.
10) Napište program, který vypíše maximální číslo, které je možno uložit do unsigned int a do signed int
Pomůcka: -1 jako signed int je maximální unsigned int a maximální signed int je 1/2 maximálního unsigned int.
11) Napište program, který zjistí totéž pro typy short a long.
12) Napište program, který objasní všechny způsoby použití operátoru / (dělení celočíselné i reálné) a operátoru % (dělení modulo).
13) Napište program, který přečte najednou tři reálná čísla a vypíše jejich aritmetický průměr na dvě desetinná místa.
14) Napište program, který krátce pípne.
Výpočet průměru pěti čísel#include <stdio.h>
/* Vypocet prumeru peti cisel */
void main ( ){
int a, b, c, d, e; float prumer;
printf("Zadej pet cisel oddelenych mezerami ");
scanf (" %d%d%d%d%d", &a, &b, &c, &d, &e) ;
prumer= ( a+b+c+d+e ) / 5. ;
printf ("Prumer je %.2f\n",prumer) ;
}
Výpočet věku#include <stdio.h>
void main ( ){
int vek,rok;
printf("Zadejte prosím rok, ve kterem jste se narodil(a):");
scanf (" %d", &vek) ;
printf ("jaky ze je letopocet : ");
scanf (" %d", &rok) ;
printf ("\nJe vam %dlet . \n", rok-vek) ;
}
Existuje 5 aritmetických operátorů:
+, -, *, / lze je použít s jakýmkoliv základním datovým typem
% zbytek po celočíselném dělení, je použitelný pouze s celočíselným typem
Zápis výrazu lze zpřehlednit závorkami:
(count*num) + (88/val) – (19 % count)
Příklad na %
printf ("%d",5/2);
printf ("%d",5%2);
printf ("%d",4/2);
printf ("%d",4%2);


scanf("%d",&d);
c0=d%10;
d/=10;
c1=d%10;
c2=d/10;
printf("%d %d %d",c2,c1,c0);

scanf("%f %f %f",&a,&b,&c);
V=a*b*c;
S=2*(a*b+a*c+b*c);
printf("%f %f",V,S);
scanf("%f %f",&a,&b);
POM=a;
a=b;
b=POM;
Jaké znáte speciální funkce pro V/V znaku?
int ch;
ch=getchar();
ch=getch();
ch=getche();
ch=getc(stdin);
putc(ch,stdout);
putchar(ch);
Jaké znáte speciální funkce pro V/V řetězce?
char s[počet];
gets(s);
puts(s);
Načítáme-li řetězec funkcí gets(s), může řetězec obsahovat mezery.
Při načítání řetězce pomocí scanf(“%s“,s) to není možné.
Speciální funkce pro znaky a pro řetězce jsou rovněž rychlejší, než obecné funkce V/V, využívající formátovaný V/V (scanf a printf).
K čemu slouží operátory?
K vytváření výrazů.
Jak dělíme operátory?
Operátory rozdělujeme podle počtu operandů (arity) na:
·operátory unární – mají 1 operand
·binární – mají 2 operandy
·ternární – má 3 operandy
Binární operátory jsou:
· aritmetické,
· relační,
· logické,
· bitové
· operátory přiřazení
· posuvu
Jak vytváříme výrazy?
Výraz je předpis pro výpočet hodnoty.
Obsahuje operátory a operandy.
Použití některých operátorů má přednost před jinými operátory (má vyšší prioritu).
Priorita operátorů může být změněna pomocí kulatých závorek.
Př.:
(a+b)/(c+d)
Jaký operátor určí velikost typu v Bytech?
sizeof(typ)
Př.:
printf("%d",sizeof(int));
Vypíše velikost celočíselného datového typu v bytech.
Jak vypadá příkaz přiřazení?
Proměnná = výraz;
Př.:
E=(a+b)/(c+d);
Jaké znáte unární operátory? (mají 1 operand)
+, - plus a mínus před číselnou proměnnou
příklad:
a=-a; // hodnotu proměnné změníme na opačnou
& reference (získání adresy objektu)
* dereference (získání objektu dle adresy)
! logická negace
~ bitová negace
++, -- inkrementace resp. dekrementace hodnoty, prefixový i postfixový zápis
(typ) přetypování na typ uvedený v závorkách
sizeof operátor pro získání délky objektu nebo typu
Jaké znáte binární operátory?
= přiřazení
+ sčítání
- odčítání
* násobení
/ dělení
% zbytek po celočíselném dělení (modulo)
<<, >> bitový posun vlevo resp. vpravo
& bitový součin (and)
| bitový součet (or)
^ bitový vylučovací soucet (xor)
&& logický součin (and)
|| logický součet (or)
. tečka, přímý přístup ke členu struktury
-> nepřímý přístup ke členu struktury
, čárka, oddělení výrazů
< menší než
> větší než
<= menší nebo rovno
>= větší nebo rovno
== rovnost
!= nerovnost
Jaké znáte rozšířené přiřazovací operátory?
Operátor přiřazení lze kombinovat s jinými operátory, např. +=, -=, *=, /=, <<=, ^=
Př.:
A+=10;
B*=2;
Jaké znáte logické operátory?
&& logický součin (and)
|| logický součet (or)
! negace (not)
Jaké znáte relační operátory?
< menší než
> větší než
<= menší nebo rovno
>= větší nebo rovno
== rovnost
!= nerovnost
Jaké znáte bitové operátory?
& bitový součin (and)
| bitový součet (or)
^ bitový vylučovací soucet (xor)
~ bitová negace
Jaký znáte adresový operátor a k čemu slouží?
& - slouží k určení adresy proměnné
Jaký znáte podmíněný operátor a k čemu slouží – uveďte příklad!
Ternární operátor:
? : podmíněný operátor
Př.:
C=(a>b)?a:b;
Vyhodnotí se výraz v kulatých závorkách (podmínka) a jestliže platí, do C se dá hodnota proměnné a.
Jestliže neplatí, do C se dá hodnota proměnné b.
Do C se teda uloží větší z obou hodnot.
Používá se místo příkazu if, např. za příkazem return ve funkci.
float maximum(float a,float b){
return (a>b)?a:b;
}
Funkce vrátí větší hodnotu z obou parametrů.
K čemu slouží operátor čárka– uveďte příklad!
, postupné vyhodnocení zleva doprava
Př.:
for(I=0,j=0;I<10;I++,j++){…}
Co je to priorita operátorů, uveďte příklad!
Priorita operátorů je přednost při vyhodnocování výrazů. Nejvyšší prioritu mají operátory v prvním řádku následující tabulky a nejnižší v posledním řádku tabulky.
operátor typ operátoru
[ ], ( ), ., ->
postfixové ++, postfixové --
prefixové ++, prefixové --, sizeof, & ,*, +, -, ~, !
přetypování, unární +, unární -
*, /, % násobení , dělení, dělení modulo
+ ,- sčítání, odčítání
<<, >> bitový posun
<, >, <=, >= relační
==, != rovnost , nerovnost
^ bitové vylučovací OR (XOR)
| bitové OR
&& logické AND
|| logické OR
? : podmíněné vyhodnocení
=, *=, /=, %=, +=, -=, <<=, >>=, &=, |=, ^= přiřazení
#include <stdio.h>
/* Vypocet prumeru peti cisel */
void main ( ){
int a, b, c, d, e; float prumer;
printf("Zadej pet cisel oddelenych mezerami ");
scanf (" %d%d%d%d%d", &a, &b, &c, &d, &e) ;
prumer= ( a+b+c+d+e ) / 5. ;
printf ("Prumer je %.2f\n",prumer) ;
}
Výpočet věku#include <stdio.h>
void main ( ){
int vek,rok;
printf("Zadejte prosím rok, ve kterem jste se narodil(a):");
scanf (" %d", &vek) ;
printf ("jaky ze je letopocet : ");
scanf (" %d", &rok) ;
printf ("\nJe vam %dlet . \n", rok-vek) ;
}
Existuje 5 aritmetických operátorů:
+, -, *, / lze je použít s jakýmkoliv základním datovým typem
% zbytek po celočíselném dělení, je použitelný pouze s celočíselným typem
Zápis výrazu lze zpřehlednit závorkami:
(count*num) + (88/val) – (19 % count)
Příklad na %
printf ("%d",5/2);
printf ("%d",5%2);
printf ("%d",4/2);
printf ("%d",4%2);


scanf("%d",&d);
c0=d%10;
d/=10;
c1=d%10;
c2=d/10;
printf("%d %d %d",c2,c1,c0);

scanf("%f %f %f",&a,&b,&c);
V=a*b*c;
S=2*(a*b+a*c+b*c);
printf("%f %f",V,S);
scanf("%f %f",&a,&b);
POM=a;
a=b;
b=POM;
Jaké znáte speciální funkce pro V/V znaku?
int ch;
ch=getchar();
ch=getch();
ch=getche();
ch=getc(stdin);
putc(ch,stdout);
putchar(ch);
Jaké znáte speciální funkce pro V/V řetězce?
char s[počet];
gets(s);
puts(s);
Načítáme-li řetězec funkcí gets(s), může řetězec obsahovat mezery.
Při načítání řetězce pomocí scanf(“%s“,s) to není možné.
Speciální funkce pro znaky a pro řetězce jsou rovněž rychlejší, než obecné funkce V/V, využívající formátovaný V/V (scanf a printf).
K čemu slouží operátory?
K vytváření výrazů.
Jak dělíme operátory?
Operátory rozdělujeme podle počtu operandů (arity) na:
·operátory unární – mají 1 operand
·binární – mají 2 operandy
·ternární – má 3 operandy
Binární operátory jsou:
· aritmetické,
· relační,
· logické,
· bitové
· operátory přiřazení
· posuvu
Jak vytváříme výrazy?
Výraz je předpis pro výpočet hodnoty.
Obsahuje operátory a operandy.
Použití některých operátorů má přednost před jinými operátory (má vyšší prioritu).
Priorita operátorů může být změněna pomocí kulatých závorek.
Př.:
(a+b)/(c+d)
Jaký operátor určí velikost typu v Bytech?
sizeof(typ)
Př.:
printf("%d",sizeof(int));
Vypíše velikost celočíselného datového typu v bytech.
Jak vypadá příkaz přiřazení?
Proměnná = výraz;
Př.:
E=(a+b)/(c+d);
Jaké znáte unární operátory? (mají 1 operand)
+, - plus a mínus před číselnou proměnnou
příklad:
a=-a; // hodnotu proměnné změníme na opačnou
& reference (získání adresy objektu)
* dereference (získání objektu dle adresy)
! logická negace
~ bitová negace
++, -- inkrementace resp. dekrementace hodnoty, prefixový i postfixový zápis
(typ) přetypování na typ uvedený v závorkách
sizeof operátor pro získání délky objektu nebo typu
Jaké znáte binární operátory?
= přiřazení
+ sčítání
- odčítání
* násobení
/ dělení
% zbytek po celočíselném dělení (modulo)
<<, >> bitový posun vlevo resp. vpravo
& bitový součin (and)
| bitový součet (or)
^ bitový vylučovací soucet (xor)
&& logický součin (and)
|| logický součet (or)
. tečka, přímý přístup ke členu struktury
-> nepřímý přístup ke členu struktury
, čárka, oddělení výrazů
< menší než
> větší než
<= menší nebo rovno
>= větší nebo rovno
== rovnost
!= nerovnost
Jaké znáte rozšířené přiřazovací operátory?
Operátor přiřazení lze kombinovat s jinými operátory, např. +=, -=, *=, /=, <<=, ^=
Př.:
A+=10;
B*=2;
Jaké znáte logické operátory?
&& logický součin (and)
|| logický součet (or)
! negace (not)
Jaké znáte relační operátory?
< menší než
> větší než
<= menší nebo rovno
>= větší nebo rovno
== rovnost
!= nerovnost
Jaké znáte bitové operátory?
& bitový součin (and)
| bitový součet (or)
^ bitový vylučovací soucet (xor)
~ bitová negace
Jaký znáte adresový operátor a k čemu slouží?
& - slouží k určení adresy proměnné
Jaký znáte podmíněný operátor a k čemu slouží – uveďte příklad!
Ternární operátor:
? : podmíněný operátor
Př.:
C=(a>b)?a:b;
Vyhodnotí se výraz v kulatých závorkách (podmínka) a jestliže platí, do C se dá hodnota proměnné a.
Jestliže neplatí, do C se dá hodnota proměnné b.
Do C se teda uloží větší z obou hodnot.
Používá se místo příkazu if, např. za příkazem return ve funkci.
float maximum(float a,float b){
return (a>b)?a:b;
}
Funkce vrátí větší hodnotu z obou parametrů.
K čemu slouží operátor čárka– uveďte příklad!
, postupné vyhodnocení zleva doprava
Př.:
for(I=0,j=0;I<10;I++,j++){…}
Co je to priorita operátorů, uveďte příklad!
Priorita operátorů je přednost při vyhodnocování výrazů. Nejvyšší prioritu mají operátory v prvním řádku následující tabulky a nejnižší v posledním řádku tabulky.
operátor typ operátoru
[ ], ( ), ., ->
postfixové ++, postfixové --
prefixové ++, prefixové --, sizeof, & ,*, +, -, ~, !
přetypování, unární +, unární -
*, /, % násobení , dělení, dělení modulo
+ ,- sčítání, odčítání
<<, >> bitový posun
<, >, <=, >= relační
==, != rovnost , nerovnost
^ bitové vylučovací OR (XOR)
| bitové OR
&& logické AND
|| logické OR
? : podmíněné vyhodnocení
=, *=, /=, %=, +=, -=, <<=, >>=, &=, |=, ^= přiřazení



Jaké znáte speciální funkce pro V/V znaku?
Jaké znáte speciální funkce pro V/V řetězce?
K čemu slouží operátory?
Jak dělíme operátory?
Jak vytváříme výrazy?
Jaký operátor určí velikost typu v Bytech?
Jak vypadá příkaz přiřazení?
Jaké znáte unární operátory? (mají 1 operand)
Jaké znáte binární operátory?
Jaké znáte rozšířené přiřazovací operátory?
Jaké znáte logické operátory?
Jaké znáte relační operátory?
Jaké znáte bitové operátory?
Jaký znáte adresový operátor a k čemu slouží?
Jaký znáte podmíněný operátor a k čemu slouží – uveďte příklad!
K čemu slouží operátor čárka– uveďte příklad!
Co je to priorita operátorů, uveďte příklad!
operátor typ operátoru
=, *=, /=, %=, +=, -=, <<=, >>=, &=, |=, ^= přiřazení