Fondamenti di C/C++

Operatori ed espressioni

Gli operatori combinano valori in espressioni. C e C++ li condividono quasi tutti, comprese le regole della divisione intera che sorprendono i principianti.

Che cos’è Operatori ed espressioni?

Gli operatori combinano valori in espressioni. C e C++ li condividono quasi tutti, comprese le regole della divisione intera che sorprendono i principianti.

Usa operatori aritmetici, di assegnazione, di confronto e logici in C e C++.

Punti importanti

  • Abilita i warning del compilatore e correggili.
  • Conosci tipo e lifetime di ogni valore.
  • Valida input e limiti degli array.

Esempi di codice C e C++

C
Esegui →
main.c
#include <stdio.h>

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

    printf("a + b = %d\n", a + b);
    printf("a - b = %d\n", a - b);
    printf("a * b = %d\n", a * b);
    printf("a / b = %d\n", a / b);              /* integer division drops the fraction */
    printf("a %% b = %d\n", a % b);             /* remainder */
    printf("a / 5.0 = %.1f\n", a / 5.0);        /* one double operand gives a double */

    int total = 10;
    total += 5;
    total *= 2;
    printf("total = %d\n", total);

    int count = 0;
    count++;
    printf("count = %d\n", count);

    /* Comparisons and logical operators give 1 (true) or 0 (false). */
    printf("a > b: %d, a == 17: %d\n", a > b, a == 17);
    printf("a > 10 && b > 10: %d\n", a > 10 && b > 10);
    printf("a > 10 || b > 10: %d\n", a > 10 || b > 10);
    return 0;
}
Output previsto
a + b = 22
a - b = 12
a * b = 85
a / b = 3
a % b = 2
a / 5.0 = 3.4
total = 30
count = 1
a > b: 1, a == 17: 1
a > 10 && b > 10: 0
a > 10 || b > 10: 1
C++
Esegui →
main.cpp
#include <iostream>

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

    std::cout << "a + b = " << a + b << '\n';
    std::cout << "a - b = " << a - b << '\n';
    std::cout << "a * b = " << a * b << '\n';
    std::cout << "a / b = " << a / b << '\n';           // integer division drops the fraction
    std::cout << "a % b = " << a % b << '\n';           // remainder
    std::cout << "a / 5.0 = " << a / 5.0 << '\n';       // one double operand gives a double

    int total = 10;
    total += 5;
    total *= 2;
    std::cout << "total = " << total << '\n';

    int count = 0;
    count++;
    std::cout << "count = " << count << '\n';

    // bool values print as true/false with std::boolalpha.
    std::cout << std::boolalpha;
    std::cout << "a > b: " << (a > b) << ", a == 17: " << (a == 17) << '\n';
    std::cout << "a > 10 && b > 10: " << (a > 10 && b > 10) << '\n';
    std::cout << "a > 10 || b > 10: " << (a > 10 || b > 10) << '\n';
}
Output previsto
a + b = 22
a - b = 12
a * b = 85
a / b = 3
a % b = 2
a / 5.0 = 3.4
total = 30
count = 1
a > b: true, a == 17: true
a > 10 && b > 10: false
a > 10 || b > 10: true

Confronto tra C e C++

Dividere due int elimina la parte decimale, quindi 17 / 5 vale 3; rendi double uno degli operandi per conservarla. I confronti e && / || danno 1 o 0 in C e true o false in C++, che std::boolalpha stampa come parole.

C

C espone piccole API procedurali e dettagli di rappresentazione.

C++

C++ mantiene il modello low-level aggiungendo tipi più sicuri.

Esercizi pratici

Esegui entrambe le versioni e modificale per osservare le diverse garanzie.

  • Aggiungi input non validi e valori limite.
  • Compila con -Wall -Wextra -Wpedantic.
  • Separa dichiarazioni e implementazione.

Esercitati con una sfida

Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.

Tutte le sfide