Sdílet prostřednictvím


Relační operátory a operátory rovnosti jazyka C

Operátory binární relace a operátory rovnosti porovnávají svůj první operand s jejich druhým operandem pro otestování platnosti zadané relace.Výsledek výrazu relace bude 1, jestliže nabývá testovaná relace hodnoty true a 0 pokud bude false.Typ výsledku je int.

Syntax

  • výraz relace:
    výraz posunutí

    výraz relace < výraz posunutí

    výraz relace > výraz posunutí

    výraz relace <= výraz posunutí

    výraz relace >= výraz posunutí

  • výraz rovnosti:
    výraz relace

    výraz rovnosti == výraz relace

    výraz rovnosti != výraz relace

Operátory relace a rovnosti testují následující relace:

Operátor

Otestovaná relace

<

První operand menší než druhý operand.

>

První operand větší než druhý operand.

<=

První operand menší nebo roven druhému operandu.

>=

První operand větší nebo roven druhému operandu.

==

Prvního operandu rovnající se druhému operandu

!=

Prvního operandu nerovnající se druhému operandu

První čtyři operátory ve výše uvedeném seznamu mají vyšší prioritu než operátory rovnosti (== a !=).Informace o přednosti operandů lze nalézt v tabulce Přednost a asociativita operátorů jazyka C.

Operandy mohou mít integrální nebo plovoucí typ, nebo typ ukazatele.Typy operandů mohou být různé.Relační operátory provádějí obvyklé aritmetické převody na integrálních typech operandu a na typech s pohyblivou řádovou čárkou.Kromě toho lze použít následující kombinace typů operandu spolu s operátory relace a rovnosti:

  • Oba operandy operátoru relace a rovnosti mohou odkazovat na stejný typ.Výsledek operátorů rovnosti (==) a nerovnosti (!=) označuje, zda oba odkazy adresují stejné umístění v paměti.U operátorů relace (<, >, <= a >=), označuje výsledek porovnání relativní pozice dvou adres v paměti objektů, na které je odkazováno.Operátory relace porovnávají pouze posuny.

    Porovnání ukazatelů je definováno pro části stejného objektu.Pokud ukazatele odkazují na členy pole, je porovnání ekvivalentní porovnání odpovídajících dolních indexů.Adresa prvního prvku pole je "menší než" adresa posledního prvku.V případě struktur jsou odkazy na členy struktury, které byly deklarovány pozděni, "větší než" odkazy na členy deklarované ve struktuře dříve.Odkazy na členy stejného sjednocení jsou totožné.

  • Hodnota ukazatele smí být porovnána s konstantou o hodnotě 0 na rovnost (==) nebo na nerovnost (!=).Ukazatel s hodnotou 0, se nazývá ukazatel "null", což znamená, že neodkazuje na platné umístění v paměti.

  • Operátory rovnosti podléhají pravidlům jako operátory relace, ale obsahují další možnosti: Ukazatel je možné porovnat s výrazem integrální konstanty s hodnotou 0 nebo s ukazatelem na void.Jsou-li oba ukazatelé nulovými ukazateli, jsou porovnáni jako totožní.Operátory rovnosti porovnávají segment a posun.

Příklady

Níže uvedené příklady ukazují operátory relace a rovnosti.

int x = 0, y = 0;
if ( x < y )

Vzhledem k tomu, že jsou x a y stejné, vrací výraz v tomto příkladu hodnotu 0.

char array[10];
char *p;

for ( p = array; p < &array[10]; p++ )
    *p = '\0';

Část v tomto příkladu nastaví každý prvek array na konstantu znaku null.

enum color { red, white, green } col;
   .
   .
   .
   if ( col == red )
   .
   .
   .

Tyto příkazy deklarují proměnnou výčtu s názvem col se značkou color.V každém okamžiku může proměnná obsahovat celočíselnou hodnotu 0, 1 nebo 2, což představuje jeden z prvků sady výčtu color: červená, bílá nebo zelená barva, v uvedeném pořadí.Pokud col obsahuje hodnotu 0 při vykonání příkazu if, všechny příkazy, které závisí na if budou provedeny.

Viz také

Referenční dokumentace

Relační operátory: <, >, <=, and >=

Operátory rovnosti: == a !=