Ce face Operatori aritmetici (+ - * / % ++ --)
Operatorii + - * / lucrează ca în matematică, cu o diferență: între doi întregi, / dă câtul întreg (7 / 2 este 3). % dă restul împărțirii și merge doar cu întregi. Din C99, câtul se trunchiază spre zero, deci -7 / 2 este -3, iar -7 % 2 este -1 (restul are semnul deîmpărțitului).
Atribuirile compuse scurtează scrierea: x += 5 înseamnă x = x + 5. ++x crește x cu 1 și dă valoarea nouă; x++ crește x, dar dă valoarea veche. Ca instrucțiune separată (i++;), cele două fac același lucru.
Împărțirea întreagă la zero (5 / 0, 5 % 0) este comportament nedefinit; de obicei programul se oprește. Verifică împărțitorul înainte.
Exemple
Exemplul 1: Câtul și restul
150 de minute înseamnă 2 ore (câtul) și 30 de minute (restul).
#include <stdio.h>
int main(void) {
int minute = 150;
printf("%d minute = %d ore și %d minute\n", minute, minute / 60, minute % 60);
printf("-7 / 2 = %d, -7 %% 2 = %d\n", -7 / 2, -7 % 2);
printf("7.0 / 2 = %.1f\n", 7.0 / 2);
return 0;
}
Rezultat
150 minute = 2 ore și 30 minute
-7 / 2 = -3, -7 % 2 = -1
7.0 / 2 = 3.5
Exemplul 2: Atribuiri compuse: un coș de cumpărături
#include <stdio.h>
int main(void) {
int total = 0;
total += 25; // pâine și lapte
total += 40; // cafea
total -= 5; // reducere
total *= 2; // aceeași comandă de două ori
printf("Total: %d lei\n", total);
return 0;
}
Rezultat
Total: 120 lei
Exemplul 3: Diferența dintre ++x și x++
x++ folosește valoarea veche în expresie, ++x pe cea nouă. După ambele, variabila a crescut cu 1.
#include <stdio.h>
int main(void) {
int a = 5, b = 5;
int x = a++;
int y = ++b;
printf("x = %d, a = %d\n", x, a);
printf("y = %d, b = %d\n", y, b);
return 0;
}
Rezultat
x = 5, a = 6
y = 6, b = 6
Greșeli frecvente
- Scrii
i = i++;sauprintf("%d %d", i, i++);. Modifici și citești aceeași variabilă fără ordine definită: comportament nedefinit. - Folosești
%cudouble. Nu compilează; pentru numere reale existăfmoddinmath.h. - Verifici dacă un număr este impar cu
n % 2 == 1. Pentru numere negative, restul este -1; scrien % 2 != 0.
Comenzi înrudite
Conversii și cast: Conversiile automate dintre tipuri și cum forțezi o conversie cu (tip): de exemplu împărțire cu zecimale între două întregi.Operatori de comparație și logici (== && || ! ?:): Compară valori și combină condiții: rezultatul este 1 (adevărat) sau 0 (fals); && și || se opresc cât mai devreme.Operatori pe biți (& | ^ ~ << >>): Lucrează direct cu biții unui întreg: steaguri (flags), măști, deplasări; folosiți la permisiuni, protocoale și hardware.round, floor, ceil, trunc și fmod: Rotunjesc un număr real la întreg în moduri diferite și calculează restul împărțirii pentru numere reale.Comportament nedefinit (undefined behavior): Situațiile pentru care standardul C nu spune ce se întâmplă: programul poate merge, poate da rezultate greșite sau se poate opri.
Întrebări & Exemple de Cod:
Operatori aritmetici (+ – * / % ++ –)Ai o nelămurire despre utilizarea comenzii
Operatori aritmetici (+ – * / % ++ –)sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.