Až dosud jsme v této sérii výukových programů pro programování v jazyce C diskutovali o základních věcech, jako jsou funkce, pole, proměnné a další. Pokračujeme-li v toku, v tomto tutoriálu probereme další takový základní koncept:operátory.
Jako začátečník v programovacím jazyce C se budete zabývat především třemi druhy operátorů:aritmetickým, relačním a logickým. Začněme airthmetickými operátory.
V C je v podstatě 5 typů aritmetických operátorů: +, -, *, / a %. Zatímco +, - a / jsou samozřejmé, * odkazuje na násobení a % je modulový operátor. V případě, že si nejste vědomi, operátor % vám poskytne zbytek. Například:
a % b
Zde operátor % zajišťuje, že dostanete hodnotu zbytku, když je 'a' děleno 'b.' To znamená, že zbytek může být nula v případech, kdy „a“ je zcela dělitelné „b“. Zde je malý příklad, který by vám měl tyto operátory lépe objasnit:
#include <stdio.h>
int main()
{
int a = 10, b = 3, c =0;
c = a + b;
printf("%d\n", c);
c = a - b;
printf("%d\n", c);
c = a*b;
printf("%d\n", c);
c = a/b;
printf("%d\n", c);
c = a%b;
printf("%d\n", c);
return 0;
}
Následuje výstup tohoto programu:
13
7
30
3
1
Zde stojí za zmínku, že když se zabýváte floaty a doubles, neměli byste používat operátor %. Také operátory + a -, které jsme zde použili, jsou binární operátory, což znamená, že vyžadují dva operandy (například 'a' a 'b' v našem případě). Existují také unární operátory + a -, které fungují na jediném operandu.
Zde je příklad unárního operátoru - v akci:
#include <stdio.h>
int main()
{
int a = 10, b = 3, c =0;
c = -a;
printf("c = %d", c);
}
Zde je výstup:
c = -10
Mezi všemi dosud diskutovanými operátory sdílejí přednostně jedny + a - první místo, za nimi *, / a %, za nimiž následují binární + a -.
Vezměte prosím na vědomí, že existují i další unární operátory, z nichž některé jsme již nepřímo diskutovali v našich předchozích tutoriálech. Zde je seznam:++, --, !, &a sizeof.
Již jsme diskutovali o operátorech inkrementace a dekrementace ++ a -- (ve formě prefixu i postfixu). ! NENÍ operátor, který neguje cokoliv, na co je aplikován. Pokud je například výsledek podmínky pravdivý, použije se ! převede jej na nepravdu a naopak.
Přesuneme se dál, &se používá k načtení adresy proměnné (jak již bylo vidět v případě argumentů funkce scanf()), zatímco operátor sizeof vám udává velikost operandu, který jí byl předán. Následující část kódu by vám měla poskytnout lepší představu o těchto operátorech:
#include <stdio.h>
int main()
{
int a = 10, b = 3, c =0, d =1, e=0, f=9;
printf("a = 10 and a++ = %d\n", a++);
printf("b = 3 and ++b = %d\n", ++b);
printf("c = 0 and c-- = %d\n", c--);
printf("d = 1 and --d = %d\n", --d);
if(!e)
{
printf("\n e is zero or FALSE and its address is: %u\n", &e);
printf("\n sizeof 'f' is: %u\n", sizeof(f));
}
return 0;
}
A tady je výstup:
a = 10 and a++ = 10
b = 3 and ++b = 4
c = 0 and c-- = 0
d = 1 and --d = 0
e is zero or FALSE and its address is: 856178696
sizeof 'f' is: 4
Pokračujeme, pojďme se rychle podívat na relační a logické operátory. Následují relační operátory:
> >= < <= == !=
Zde je návod, jak je lze použít:
a > b
a >= b
a < b
a <= b
a == b
a != b
Ve výše uvedeném pořadí tyto operátory zkontrolují, zda je „a“ větší, větší nebo rovno, menší než, menší nebo rovno, rovno a ne rovno „b“. První čtyři operátory mají stejnou prioritu, která je vyšší než poslední dva. Všimněte si, že poslední dva operátory se také nazývají operátory rovnosti.
A konečně se dostáváme k logickým operátorům. V podstatě jsou dvě:&&a ||. Oba tyto operátory se většinou používají k vyhodnocení podmínek nebo výrazů. Například:
if (cond1 && cond2)
{
}
if (expr1 && expr2)
{
}
if (cond1 || cond2)
{
}
if (expr1 || expr2)
{
}
V případě prvních dvou příkazů if vstoupí provedení do bloku pouze v případě, že jsou splněny obě podmínky. Zatímco v případě posledních dvou příkazů if, provedení vstoupí do bloku, pokud je splněna některá z podmínek výrazu.
Pamatujte, že relační operátory mají nižší prioritu než aritmetické operátory a logické operátory mají nižší prioritu než relační operátory a operátory rovnosti. Mezi sebou má &&vyšší prioritu než ||.
Závěr
V tomto tutoriálu jsme probrali základy operátorů, jejich fungování a jejich prioritu. Doporučuje se, abyste vytvořili nějaké ukázkové programy v jazyce C, abyste si otestovali koncepty, o kterých se zde mluví. V případě jakýchkoli pochybností nebo dotazů nám dejte vědět v komentářích níže.
-
Výukový program programování Linux C, část 8 – Volání podle hodnoty versus volání podle ukazatele/adresy
-
Výukový program programování Linux C, část 8 – Volání podle hodnoty versus volání podle ukazatele/adresy
-
Výukový program programování Linux C, část 8 – Volání podle hodnoty versus volání podle ukazatele/adresy