Nelle espressioni del linguaggio C sono digitati all'interno: i letterali hanno tipi. Per esempio.    123    è un int, e   123U    è un int unsigned,   123L    è un long int e così via. Il tipo di un'espressione dipende dai tipi delle sottoespressioni: il tipo di   a + b    dipende dai tipi di   a    e   b   . 
 Garantire il tipo corretto è particolarmente importante quando si esegue un po 'di manipolazione. Devi anche fare attenzione ai caratteri letterali di grandi dimensioni che non rientrano in un int (o nel tipo di variabile a cui stai assegnando il valore dell'espressione - le conversioni di restringimento sono una fonte comune di errori). 
 Tuttavia, la maggior parte del codice non dovrebbe utilizzare esplicitamente un tipo   long    o il suffisso letterale   L    perché la dimensione degli interi lunghi dipende dalla piattaforma. I numeri interi e i numeri interi lunghi possono anche avere le stesse dimensioni. 
 Per il codice portatile che ha bisogno di una dimensione specifica, è più corretto usare i tipi di interi a larghezza fissa C99 (come   int64_t   ). Non hanno suffissi letterali corrispondenti, devi invece usare i macro letterali come   INT64_C(123)    da   stdint.h   . Queste macro applicheranno i cast giusti o i suffissi di tipo dipendente dalla piattaforma, se necessario. 
 In C ++ il tipo di espressione può influenzare con sovraccarichi. In particolare   0   ,   'false'   ,   nullptr    e   %code%    si comportano in modo molto diverso, nonostante tutto sia "nullo" e in una certa misura implicitamente convertibile l'uno con l'altro.