TIPI
Nel linguaggio C, i tipi di dato definiscono la natura delle informazioni che una variabile può contenere. Sono fondamentali perché permettono al compilatore di sapere come interpretare i dati e quanta memoria allocare.
QUANTI SONO
In C esistono diversi tipi di dato primitivi, come numeri interi, numeri con virgola, caratteri e valori booleani (anche se questi ultimi non sono nativi nelle versioni più vecchie). Ogni tipo ha caratteristiche specifiche in termini di dimensione e utilizzo.
VARIABILI DI TEMPLATE
In C non esistono vere e proprie “variabili di template” come in altri linguaggi più moderni. Tuttavia, il concetto può essere avvicinato all’idea di usare lo stesso schema logico con tipi diversi, grazie a strumenti come le macro o la programmazione generica limitata.
ESEMPI
Un esempio concettuale di tipi in C include variabili che rappresentano numeri interi per contatori, numeri decimali per misure più precise e caratteri per rappresentare simboli o lettere. Ogni scelta del tipo dipende dal contesto in cui viene utilizzata la variabile.
SPOILER: TIPI CUSTOM
Oltre ai tipi primitivi, in C è possibile creare tipi personalizzati. Questo avviene tramite strutture, unioni o definizioni di tipo, che permettono di modellare dati più complessi e organizzati, rendendo il codice più leggibile e modulare.
CODICE
#include <stdio.h>
#include <stdbool.h> // Per il tipo bool
int main()
{
// Interi
char c = 'A';
int sc = -100;
unsigned int uc = 200;
short s = -32000;
unsigned short us = 65000;
int i = -2147483647;
unsigned int ui = 4294967295U;
long l = -9223372036854775807L;
unsigned long ul = 18446744073709551615UL;
long long ll = -9223372036854775807LL;
unsigned long long ull = 18446744073709551615ULL;
// Floating point
float f = 3.14f;
double d = 2.718281828459;
long double ld = 1.6180339887L;
// Booleano (da stdbool.h)
bool b = true;
int b2 = 1; // 1(true) e 0(false)
// Stampa
printf("Tipi interi:\n");
printf("char: %c, valore ASCII: %d\n", c, c);
printf("int: %d\n", sc);
printf("unsigned char: %u\n", uc);
printf("short: %hd\n", s);
printf("unsigned short: %hu\n", us);
printf("int: %d\n", i);
printf("unsigned int: %u\n", ui);
printf("long: %ld\n", l);
printf("unsigned long: %lu\n", ul);
printf("long long: %lld\n", ll);
printf("unsigned long long: %llu\n", ull);
printf("\nTipi floating point:\n");
printf("float: %f\n", f);
printf("double: %lf\n", d);
printf("long double: %Lf\n", ld);
printf("\nTipo booleano:\n");
printf("bool: %s\n", b ? "true" : "false");
printf("bool nativo: %d", b2);
return 0;
}