45
OPERATORY ARYTMETYCZNE
Język C definiuje następujące dwuargmnentowe operatory arytmetyczne:
• dodawanie (“+”),
• odejmowanie
• mnożenie (“*"),
• dzielenie (“/”),
• reszta z dzielenia (“%”) określona tylko dla liczb całkowitych (tzw. dzielenie modulo).
int a=7, b=2, c; c - a % b;
printf C7.d\n",c); /• wypisze "1" */
Należy pamiętać, że (w pewnym uproszczeniu) wynik oj>eracji jest typu takiego jak największy z argumentów. Oznacza to, że operacja wykonana na dwóch liczbach całkowitych nadal ma typ całkowity nawet jeżeli wynik przypiszemy do zmiennej rzeczywistej. Dla przykładu, poniższy kcal:
float a ■ 7 / 2; printf(ny,f\n", a);
wypisze (wbrew oczekiwaniu początkujących programistów) 3, a nie 3.5. Odnosi się to nie tylko do dzielenia, ale także mnożenia, np.:
float a * 1000 * 1000 * 1000 * 1000 * 1000 * 1000; printf("y,f\nM, a);
prawdopodobnie da o wiele mniejszy wynik niż byśmy się spodziewali. Aby wymusić obliczenia rzeczywiste należy zmienić typ jednego z argumentów na liezl>ę rzeczywistą po prostu zmieniając literał lub korzystając z rzutowania, np.:
float a * 7.0 / 2;
float b = (float)1000 * 1000 * 1000 * 1000 * 1000 * 1000; printf("y.f\n", a); printf ("y,f\nM, b);
Operatory dodawania i odejmowania są określone również, gdy jednym z argumentów jest wskaźnik, a drugim liczlwi całkowita. Ten drugi jest także określony, gdy oba argumenty są wskaźnikami. O takim użyciu tych operatorów dowiesz się więcej C/Wskaźniki w dalszej części książki.
Aby skrócić zapis wprowadzono dodatkowe operatory: iukremcntacji (“++”) i de-krementacji (“-”), które dodatkowo mogą być pre- lub postfiksowe. W rezultacie mamy więc cztery operatory:
pre-inkrementacja (“+-fi”),