PROGRAMMIAMO
C++ - Assegnazioni
Assegnazioni

Il modo più semplice per attribuire un valore a una variabile consiste nell'eseguire un'istruzione di assegnazione, come la seguente:

pippo = -5 ;

Il simbolo di uguaglianza (=) indica appunto l'operatore di assegnazione. La destinazione dell'assegnazione sta a sinistra dell'uguale mentre la sorgente sta a destra e l'istruzione è terminata dal solito punto e virgola. Il valore numerico presente in una assegnazione viene anche detto costante numerica (per distinguerlo appunto dalle variabili).

Il seguente è invece un esempio di assegnazione di un valore decimale:

pi_greco = 3.14 ;

Si noti che il C usa il punto decimale (e non la virgola), secondo la notazione anglosassone.

Un altro esempio di assegnazione è il seguente, che fa uso della cosiddetta notazione esponenziale:

numero = 17.88e-4 ;

In questo ultimo esempio il valore assegnato è 17,88 x 10 -4

Assegnazione di una variabile a un'altra

Oltre che usando costanti numeriche, è possibile assegnare a una variabile il valore di un'altra variabile come nel seguente esempio:

num1 = num2;

Nell'interpretare questa istruzione bisogna prestare molta attenzione al verso implicito dell'assegnazione, che avviene sempre da destra verso sinistra. In altre parole, il valore di num2 viene assegnato a num1 e non viceversa!

Inizializzazioni

Quando si assegna un valore ad una variabile per la prima volta in un programma si parla di inizializzazione della variabile. Per esempio nel programma per l'elevamento a potenza, l'istruzione:

potenza=1;

è l'inizializzazione della variabile potenza:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
    {

    double base, potenza;
    int esponente;

    cout<<"Fornisci la base: ";
    cin>>base;

    cout<<"Fornisci l'esponente: ";
    cin>>esponente;

    potenza=1;

In C è possibile inizializzare una variabile anche sulla stessa riga in cui la variabile viene dichiarata, in questo modo:

int potenza=1 ;

L'istruzione precedente è equivalente alla seguente coppia di istruzioni:

int potenza ;
potenza =1 ;

Una cosa molto importante da sapere è che in C una variabile non inizializzata o non acquisita da tastiera non ha nessun valore. In altre parole, dichiarando una variabile e non assegnandole in modo esplicito un valore, il contenuto della variabile stessa è imprevedibile: potrebbe valere zero ma potrebbe anche contenere un valore pressoché casuale. Per evitare questo errore, fonte di possibili gravi mal funzionamenti del programma, il programmatore deve accertarsi sempre che tutte le variabili abbiano un valore prima di essere usate.

Conversioni di tipo

Quando si assegna una variabile (o una costante) di un certo tipo a una variabile di tipo differente, il C esegue automaticamente una conversione di tipo. In pratica il caso più interessante è quando si mescolano fra loro valori int e valori double.

Consideriamo per prima cosa il caso di una variabile di tipo int assegnata a una variabile di tipo double. Per esempio:

int var ;
double num:
var = 53 ;
num = var;

In questo caso siccome la destinazione dell'assegnazione (num) ha un tipo "più grande" di quello della sorgente (var) non si ha perdita di dati: il numero 53 (anzi 53.0, perché venendo assegnato a una variabile double, diventa una costante double) passa senza problemi alla variabile num.

Quando si assegna invece a una variabile int una costante numerica double (cioè con la virgola) oppure il contenuto di una variabile double, occorre tener presente che il risultato viene troncato, cioè vengono eliminate semplicemente le cifre decimali, senza nessun arrotondamento.

Per esempio con le seguenti istruzioni:

int numero_intero ;
numero_intero = 4.78 ;

alla fine la variabile numero_intero conterrà il valore 4. Questo tipo di istruzioni produce un messaggio di warning (avvertimento) durante la fase di compilazione del programma. I warning non impediscono l'esecuzione del programma, ma possono segnalare la presenza di potenziali errori.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it