C'è qualche caso d'uso per usare la lettera 'L' dopo un numero letterale in C?

6

So che nel codice C usando L dopo un numero dice al compilatore che il rispettivo numero è L.

Tuttavia non vedo alcun utilizzo pratico per questo. I compilatori moderni hanno ancora un uso per questo costrutto linguistico?

Se ci sono ancora casi d'uso, quali sarebbero questi casi?

    
posta yoyo_fun 11.10.2017 - 14:33
fonte

1 risposta

13

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.

    
risposta data 11.10.2017 - 14:47
fonte

Leggi altre domande sui tag