CyberStars

Operators

Am văzut deja +, -, *, / în lecțiile anterioare. Hai să ne uităm la restul setului de unelte aritmetice al C-ului

#include <stdio.h>

int main(void) {
    int a = 17;
    int b = 5;

    printf("%d\n", a + b);   // adunare
    printf("%d\n", a - b);   // scadere
    printf("%d\n", a * b);   // inmultire
    printf("%d\n", a / b);   // impartire
    printf("%d\n", a % b);   // rest (modulo)

    return 0;
}

Ieșire

22
12
85
3
2

Cel interesant este a / b = 3, nu 3.4. De ce? a și b sunt amândoi int, deci C face împărțire întreagă și aruncă partea zecimală. Am acoperit asta în variables-float


Operatorul nou este %, numit modulo (sau "rest")

#include <stdio.h>

int main(void) {
    printf("%d\n", 17 % 5);   // 2
    printf("%d\n", 20 % 4);   // 0
    return 0;
}

17 / 5 = 3 cu rest 2, deci 17 % 5 = 2. 20 / 4 = 5 exact, deci restul este 0

Caz de utilizare clasic: verificarea dacă un număr este par

#include <stdio.h>

int main(void) {
    int n = 10;
    if (n % 2 == 0) {
        printf("par\n");
    } else {
        printf("impar\n");
    }
    return 0;
}

C are scurtături la îndemână

  • a++ este același lucru cu a = a + 1
  • a-- este același lucru cu a = a - 1
  • a += 5 este același lucru cu a = a + 5
  • a -= 3 este același lucru cu a = a - 3
  • a *= 2 este același lucru cu a = a * 2
  • a /= 4 este același lucru cu a = a / 4

Vei vedea i++ în bucle for absolut peste tot


Dar puterile? C nu are un operator încorporat pentru putere. Folosim pow() din biblioteca matematică

#include <stdio.h>
#include <math.h>

int main(void) {
    printf("%f\n", pow(2, 3));   // 8.000000
    return 0;
}

pow() întoarce mereu un double, deci chiar și 2 la puterea 3 iese ca 8.000000, nu 8

Ca să folosim pow() avem nevoie de #include <math.h>. Pe unele sisteme, trebuie și să legi biblioteca matematică cu -lm când compilezi, dar platforma noastră se ocupă de asta pentru noi


Ordinea operațiilor este aceeași ca în matematică: * și / înaintea lui + și -

#include <stdio.h>

int main(void) {
    printf("%d\n", 2 + 3 * 4);     // 14, nu 20
    printf("%d\n", (2 + 3) * 4);   // 20
    return 0;
}

Când ai dubii, adaugă paranteze. Oricum fac codul mai ușor de citit


Misiune: Panoul de diagnostic al mainframe-ului

Panoul de diagnostic al mainframe-ului citește două valori de pe consolă și rulează cele cinci operații aritmetice de bază, ca tehnicianul de tură să poată verifica rapid dacă unitatea aritmetică funcționează corect.

Citește două numere întregi a și b folosind scanf, apoi afișează rezultatele lui a + b, a - b, a * b, a / b și a % b, fiecare pe propria linie. Citește datele direct; nu afișa nicio întrebare înainte de citire.

Exemplu

Intrare

17 5

Ieșire

22
12
85
3
2

Exemplu

Intrare

20 4

Ieșire

24
16
80
5
0