Michal Čižmár / 16. 03. 2004, 00:00
Je to veľmi zaujímavá konštrukcia a dá sa nahradiť príkazmi if-else , ale v niektorých prípadoch môže sprehľadniť text.
Vysvetľovať veľa netreba, všetko pochopíte hneď na príklade. Ide o kratučký program s jednou funkciou ( teda okrem main() ) .
#include
#include
int max(int c1, int c2)
{
int vysledok;
vysledok = (( c1>c2) ? c1 : c2) ; /* pouzite ternarneho operatora */
return vysledok;
}
int main()
{
int cislo1,cislo2;
printf(" Zadajte prve cislo : ");
scanf("%d",&cislo1);
printf(" Zadajte druhe cislo : ");
scanf("%d",&cislo2);
printf("Hodnota vecsieho cisla je %d",max(cislo1,cislo2) );
getch();
}
Tak ako by sme vysledok = (( c1>c2) ? c1 : c2) ; preložili do slovenčiny ?
Porovnaj čísla c1, c2 a ak je podmienka splnená , teda c1>c2 , tak výsledkom je c1 a jeho hodnota sa uloží do premennej vysledok.
Funkciu max by sme mohli dokonca skrátit len na jeden riadok a skrátiť jej čas vykonávanie tým, že sa nealokuje premenná vysledok takto:
int max(int c1, int c2)
{
return (( c1>c2) ? c1 : c2) ; /* pouzite ternarneho operatora */
}
Ukážeme si ešte jedno použite ternárneho operátora :
#include
#include
void vypis(void)
{
printf(" Vypisujem \n");
/* vypisuje napr. priebezne informacie */
}
/*-------------------------------------------------------------------*/
void koniec(void)
{
printf(" Koniec \n");
}
/*---------------------------------------------------------------------*/
int main()
{
int krokov=5; /* rucne zmente hodnotu aby ste videli
ako funguje ternarny operator */
(krokov==5) ? vypis() : koniec() ;
getch();
return 0;
}
Tento príklad je len ilustračný a určite by bolo lepšie použiť konštrukciu IF-ELSE, takýto spôsob sa skôr používa na vrátenie pointra na funkciu ,ale tým sa nemusíte trápiť. K tomu čo je to pointer na funkciu sa dostaneme oveľa, oveľa neskôr a určite budete môcť bez toho kľudne spávať :-)
Musím sa tu priznať, že ternárny operátor využívam veľmi málo, takmer vôbec . Ak nájdete nejaké jeho vynikajúce použite tak mi určite napíšte.
Ak ste sa dostali až sem, znamená to že písanie tohto seriálu nie je zabitý čas a uvítal by som Vašu konštruktívnu kritiku, aby som mohol stále zvyšovať kvalitu seriálu o zaujímavom programovacom jazyku C.
See You
micitn@orangemail.sk
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk