51
OPERATOR PRZECINEK
a = (b>=c) ? b : c; /* Jeśli b jest większe bądź równe c, to zwróć b.
W przeciwnym wypadku zwróć c. ♦/
lub zwracanie modułu liczby: a - a < 0 ? -a : a;
Wartości wyrażeń są przy tym operatorze obliczane tylko jeżeli zachodzi taka potrzeba. np. w wyrażeniu 1 ? 1 : fooO funkcja foo() nie zostanie wywołana.
Operator przecinek jest dość dziwnym operatorem. Powoduje on obliczame wartości wyrażeń od lewej do prawej |>o czym zwrócenie wartości ostatniego wyrażenia. W zasadzie, w normalnym kodzie programu ma on niewielkie zastosowanie, gdyż zamiast niego lepiej rozdzielać instrukcje zwykłymi średnikami. Mn on jednak zastosowanie w instrukcji sterującej for.
Oj)orator sizeof zwraca rozmiar w bajtach (gdzie l>ajtcm jest zmienna typu char) podanego typu lub typu po<lanego wyrażenia. Ma on dwa rodzaje: sizeof (typ) lub sizeof wyrażenie. Przykładowo:
#include <stdio.h>
int mainO
{
printf("sizeof(short ) printf("sizeof(int )
printf("sizeof(long ) printf("sizeof(float ) printf("sizeof(double) return 0;
>
- 7,d\n", sizeof (short ))
■ */,d\n", sizeof (int )) = */,d\n", sizeof (long )) * */,d\n", sizeof (float ))
■ */,d\n", sizeof (double))
Ojjerator ten jest często wykorzystywany przy dynamicznej alokacji pamięci, co zostanie opisane w rozdziale poświęconym wskaźnikom.
Pomimo, że w swej budowie operator sizeof bardzo przypomina funkcję, to jednak nią nie jest. Wynika to z trudności w implementacji takowej funkcji - jej specyfika musiałaby odnosić się bezpośrednio ck) kompilatora. Ponadto jej argumentem musiałyby być typy, a nie zmienne. W języku C nie jest możliwe przekazywanie typu jako argumentu. Ponadto często zdarza się, że rozmiar zmiennej musi być wiadomy jeszcze w czasie kompilacji — to ewidentnie wyklucza implementację sizeof() jako funkcji.
Poza wyżej opisanymi operatorami istnieją jeszcze:
• operator opisany przy okazji opisywania tablic;