Zoeken…


Opmerkingen

De term letterlijk wordt meestal gebruikt om een reeks tekens in een C-code te beschrijven die een constante waarde aangeeft, zoals een getal (bijvoorbeeld 0 ) of een tekenreeks (bijvoorbeeld "C" ). Strikt genomen gebruikt de standaard de term constante voor gehele constanten, zwevende constanten, opsommingsconstanten en tekenconstanten, waarbij de term 'letterlijk' wordt gereserveerd voor stringliteralen, maar dit is niet gebruikelijk.

Letterlijke tekens kunnen voorvoegsels of achtervoegsels hebben (maar niet beide). Dit zijn extra tekens die een lettertype kunnen starten of eindigen om het standaardtype of de weergave ervan te wijzigen.

Letterlijke getallen

Integere literalen worden gebruikt om integrale waarden te geven. Drie numerieke basissen worden ondersteund, aangegeven met voorvoegsels:

Baseren Voorvoegsel Voorbeeld
Decimale Geen 5
Octaal 0 0345
Hexadecimaal 0x of 0X 0x12AB , 0X12AB , 0x12ab , 0x12Ab

Merk op dat dit schrijven geen enkel teken bevat, dus gehele getallen zijn altijd positief. Zoiets als -1 wordt behandeld als een expressie met één letterlijk geheel getal ( 1 ) dat wordt genegeerd met een -

Het type decimaal geheel getal letterlijk is het eerste gegevenstype dat past bij de waarde van int en long . Sinds C99 wordt long long ook ondersteund voor zeer grote literalen.

Het type van een octaal of hexadecimaal geheel getal letterlijk is het eerste gegevenstype dat kan passen bij de waarde int , unsigned , long en unsigned long . Sinds C99 worden long long unsigned long long ondersteund voor zeer grote literalen.

Met behulp van verschillende achtervoegsels kan het standaardtype van een letterlijke waarde worden gewijzigd.

Achtervoegsel Uitleg
L , l long int
LL , ll (sinds C99) long long int
U , u unsigned

De achtervoegsels U en L / LL kunnen in elke volgorde en in elk geval worden gecombineerd. Het is een fout om achtervoegsels te dupliceren (bijvoorbeeld twee U achtervoegsels te geven), zelfs als ze verschillende gevallen hebben.

String literals

Tekenreeksliteralen worden gebruikt om reeksen tekens op te geven. Het zijn reeksen tekens tussen dubbele aanhalingstekens (bijvoorbeeld "abcd" en hebben het type char* ).

Het L voorvoegsel maakt het letterlijke een brede reeks tekens, van het type wchar_t* . Bijvoorbeeld, L"abcd" .

Sinds C11 zijn er andere coderingsvoorvoegsels, vergelijkbaar met L :

voorvoegsel basistype codering
geen char platform afhankelijk
L wchar_t platform afhankelijk
u8 char UTF-8
u char16_t meestal UTF-16
U char32_t meestal UTF-32

Voor de laatste twee kan worden gevraagd met functietestmacro's als de codering effectief de overeenkomstige UTF-codering is.

Drijvende komma letterlijk

Drijvende-komma-letterlijke waarden worden gebruikt om getekende reële getallen weer te geven. De volgende achtervoegsels kunnen worden gebruikt om het lettertype op te geven:

Achtervoegsel Type Voorbeelden
geen double 3.1415926 -3E6
f , F float 3.1415926f 2.1E-6F
l , L long double 3.1415926L 1E126L

Om deze achtervoegsels gebruiken, moet de letterlijke een floating point letterlijke zijn. 3f is bijvoorbeeld een fout, omdat 3 een geheel getal is, terwijl 3.f of 3.0f correct zijn. Voor long double is de aanbeveling om altijd hoofdletter L voor de leesbaarheid.

Letterlijke lettertekens

Letterlijke lettertypen zijn een speciaal type gehele letterlijke getallen die worden gebruikt om één teken te vertegenwoordigen. Ze staan tussen enkele aanhalingstekens, bijvoorbeeld 'a' en hebben het type int . De waarde van de letterlijke waarde is een geheel getal volgens de tekenset van de machine. Ze staan geen achtervoegsels toe.

Het L voorvoegsel voor een letterlijk karakter maakt het een breed karakter van het type wchar_t . Op dezelfde manier omdat C11 u en U prefixen het brede tekens van het type char16_t en char32_t .

Wanneer u bepaalde speciale tekens wilt weergeven, zoals een teken dat niet wordt afgedrukt, worden escape-reeksen gebruikt. Escape-reeksen gebruiken een reeks tekens die in een ander karakter worden vertaald. Alle escape-reeksen bestaan uit twee of meer tekens, waarvan de eerste een backslash \ . De tekens direct na de backslash bepalen welk teken letterlijk de reeks wordt geïnterpreteerd.

Escape-reeks Vertegenwoordigd karakter
\b Backspace
\f Form feed
\n Line feed (nieuwe regel)
\r Vervoer terug
\t Horizontaal tabblad
\v Verticaal tabblad
\\ backslash
\' Enkele aanhalingstekens
\" Dubbel aanhalingsteken
\? Vraagteken
\nnn Octale waarde
\xnn ... Hexadecimale waarde
C89
Escape-reeks Vertegenwoordigd karakter
\a Alert (piep, bel)
C99
Escape-reeks Vertegenwoordigd karakter
\unnnn Universele tekennaam
\Unnnnnnnn Universele tekennaam

Een universele tekennaam is een Unicode-codepunt. Een universele tekennaam kan worden toegewezen aan meer dan één teken. De cijfers n worden geïnterpreteerd als hexadecimale cijfers. Afhankelijk van de UTF coderen gebruikt, kan een universeel karakter naamvolgorde resulteren in een codepunt die uit meerdere karakters, in plaats van een normale char karakter.

Bij gebruik van de ontsnappingsreeks van de lijntoevoer in tekstmodus I / O, wordt deze omgezet in de OS-specifieke newline-byte of byte-reeks.

De escape-reeks met het vraagteken wordt gebruikt om trigrafen te voorkomen. Bijvoorbeeld, ??/ wordt gecompileerd als de trigraph die een backslash-teken '\' , maar het gebruik van ?\?/ Zou resulteren in de string "??/" .

Er kunnen een, twee of drie octale cijfers n in de ontsnappingssequentie van de octale waarde.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow