Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduzione al C
Unità 2 - Variabili
indirizzo
tipo 5640123
x = 5;
r = 471.035;
m = 7 * 8;
• x e m sono variabili intere, cioè dichiarate di tipo int
• r è una variabile reale, cioè dichiarata di tipo float
• Le prime due espressioni sono costanti dello stesso tipo
delle variabili che compaiono a primo membro
• La terza espressione è un’espressione aritmetica a valore
intero
• Dopo l’esecuzione dell’assegnazione, la variabile m vale 56
ATTENZIONE
Nella scanf le variabili da leggere devono essere indicate non
con il nome ma con l’indirizzo: &x è l’indirizzo di x
Variabili e tipi 2013/2014 Pagina 17
Unità 2
Esempio scanf (esecuzione)
main()
{
int x, code;
printf("Inserisci un intero: ");
code = scanf("%d", &x);
printf("Codice di ritorno della scanf: %d \n", code);
printf("Ho letto %d", x);
return 0;
}
#include <stdio.h>
#include <limits.h>
int main() {
printf("SHRT_MIN=%d\n", SHRT_MIN); printf("SHRT_MAX=%d\n", SHRT_MAX);
printf("INT_MIN=%d\n", INT_MIN); printf("INT_MAX=%d\n", INT_MAX);
printf("LONG_MIN=%d\n", LONG_MIN); printf("LONG_MAX=%d\n", LONG_MAX);
printf("USHRT_MAX=%u\n", USHRT_MAX);
printf("UINT_MAX=%u\n", UINT_MAX);
printf("ULONG_MAX=%u\n", ULONG_MAX);
return 0;
}
Variabili e tipi 2013/2014 Pagina 35
Unità 2
Overflow
main()
{
short int si = 32767 ;
long int li = 32767 ;
printf("Valore di si prima dell'incremento: %d \n", si);
printf("Valore di li prima dell'incremento: %d \n", li);
si = si+1;
li = li+1;
printf("Valore di si dopo l'incremento: %d \n", si);
printf("Valore di li dopo l'incremento: %d \n", li);
return 0;
}
Variabili e tipi 2013/2014 Pagina 37
Unità 2
Esempio: overflow (esecuzione)
x = x - 1;
x -= 1;
x--;
Esempio d’uso
int main ()
{
double a, b, c;
printf(“Inserisci il primo cateto:\n");
scanf("%lf", &a);
printf(“Inserisci il secondo cateto:\n");
scanf("%lf", &b);
c = sqrt(a*a + b*b);
printf("valore ipotenusa: %f\n", c);
return 0;
}
double
float
unsigned long PERDITA DI
PROMOZIONE PRECISIONE
long
unsigned int
int
short
TIPO INFERIORE
char TIPO INFERIORE
ESEMPIO
a = c + b; ( c di tipo float e b di tipo double)
• c è promosso a double e l’espressione è di tipo double
• Ma se a è float allora il valore dell’espressione verrà poi
riconvertito a float (con perdita di informazione)
#include <stdio.h>
int main () {
long b = 90000L;
short a = (short) 3.75; // cast a short
// dell’espressione 3.75
// (di tipo double)
printf("%d\n", a);
a = b; //assegno long a short
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
int main()
{
char c = 'E';
printf("%c corrisponde a %d\n", c, c);
c = 'r';
printf("%c corrisponde a %d\n", c, c);
c = 'i';
printf("%c corrisponde a %d\n", c, c);
c = 'k';
printf("%c corrisponde a %d\n", c, c);
c = 'a';
printf("%c corrisponde a %d\n", c, c);
return 0;
}
Variabili e tipi 2013/2014 Pagina 64
Unità 2
Interi senza segno