Sök…


Anmärkningar

Termen letteral används vanligtvis för att beskriva en sekvens med tecken i en C-kod som anger ett konstant värde såsom ett tal (t.ex. 0 ) eller en sträng (t.ex. "C" ). Strängt taget använder standarden termen konstant för heltalskonstanter, flytande konstanter, uppräkningskonstanter och karaktärskonstanter och reserverar termen "bokstavlig" för strängbokstavar, men detta är inte vanlig användning.

Bokstäver kan ha prefix eller suffix (men inte båda) som är extra tecken som kan starta eller avsluta en bokstav för att ändra dess standardtyp eller dess representation.

Heltal bokstäver

Heltalsbokstäver används för att tillhandahålla integrerade värden. Tre numeriska baser stöds, indikerade med prefix:

Bas Prefix Exempel
Decimal Ingen 5
Octal 0 0345
hexadecimal 0x eller 0X 0x12AB , 0X12AB , 0x12ab , 0x12Ab

Observera att detta skrivande inte innehåller några tecken, så heltal bokstäver är alltid positiva. Något som -1 behandlas som ett uttryck som har en hel bokstavlig ( 1 ) som negeras med en -

Typen av ett decimalt heltal bokstavligt är den första datatypen som kan passa värdet från int och long . Sedan C99 stöds long long också för mycket stora bokstäver.

Typen av en oktal eller hexadecimal heltal bokstavlig är den första datatypen som kan passa värdet från int , unsigned , long och unsigned long . Sedan C99 stöds också long long och unsigned long long för mycket stora bokstäver.

Med hjälp av olika suffix kan standardtypen för en bokstavsändring ändras.

Ändelse Förklaring
L , l long int
LL , ll (sedan C99) long long int
U , u unsigned

U- och L / LL-suffixerna kan kombineras i valfri ordning och fall. Det är ett fel att kopiera suffix (t.ex. ge två U suffix) även om de har olika fall.

Strängbokstäver

Strängbokstäver används för att specificera matriser av tecken. De är sekvenser av tecken som är inneslutna i dubbla citat (t.ex. "abcd" och har char* ).

L prefixet gör bokstäverna till ett brett teckenfält av typen wchar_t* . Till exempel L"abcd" .

Sedan C11 finns det andra kodningsprefix, liknande L :

prefix bastyp kodning
ingen char plattformsberoende
L wchar_t plattformsberoende
u8 char UTF-8
u char16_t vanligtvis UTF-16
U char32_t vanligtvis UTF-32

För de två senare kan det frågas med funktionstestmakroer om kodningen i själva verket är motsvarande UTF-kodning.

Flytande punkt bokstäver

Flytande punktlitteraler används för att representera signerade verkliga nummer. Följande suffix kan användas för att ange bokstavstyp:

Ändelse Typ exempel
ingen double 3.1415926 -3E6
f , F float 3.1415926f 2.1E-6F
l , L long double 3.1415926L 1E126L

För att använda dessa suffix måste den bokstavliga vara en flytande punktbokstav. Till exempel är 3f ett fel, eftersom 3 är ett heltal bokstavligt, medan 3.f eller 3.0f är korrekta. För long double är rekommendationen att alltid använda kapital L för läsbarhetens skull.

Teckenbokstäver

Teckenbokstäver är en speciell typ av heltalslitteraler som används för att representera ett tecken. De är inneslutna i enstaka citat, t.ex. 'a' och har typen int . Värdet på det bokstavliga är ett heltal enligt maskinens teckenuppsättning. De tillåter inte suffix.

L prefixet före en bokstavstecken gör det till ett brett tecken av typen wchar_t . På samma sätt eftersom C11 u och U prefix gör det till stora tecken av typen char16_t respektive char32_t .

När man tänker representera vissa specialtecken, till exempel ett tecken som inte skriver ut, används escape-sekvenser. Escape-sekvenser använder en sekvens med tecken som översätts till en annan karaktär. Alla flyktingssekvenser består av två eller flera tecken, varav den första är ett bakslag \ . Tecknen som följer omedelbart efter snedstrecket bestämmer vilken bokstavlig karaktär sekvensen tolkas som.

Escape Sequence Representerade karaktär
\b Backspace
\f Forma foder
\n Radmatning (ny rad)
\r Vagnretur
\t Horisontell flik
\v Vertikal flik
\\ bakstreck
\' Enkel citattecken
\" Dubbel citattecken
\? Frågetecken
\nnn Octalt värde
\xnn ... Hexadecimalt värde
C89
Escape Sequence Representerade karaktär
\a Varning (pip, klocka)
C99
Escape Sequence Representerade karaktär
\unnnn Universellt teckennamn
\Unnnnnnnn Universellt teckennamn

Ett universellt teckennamn är en Unicode-kodpunkt. Ett universellt teckennamn kan kartlägga mer än ett tecken. Siffrorna n tolkas som hexadecimala siffror. Beroende på vilken UTF-kodning som används kan en universalsekvensnamnssekvens resultera i en kodpunkt som består av flera tecken istället för ett enda normalt char tecken.

När du använder radmatningssekvensen i textläge I / O konverteras den till den OS-specifika newline-byte- eller bytesekvensen.

Frågeteckenfångssekvens används för att undvika trigrafer . Exempelvis är ??/ kompilerat som den trigraph som representerar ett backslashtecken '\' , men om du använder ?\?/ Skulle det resultera i strängen "??/" .

Det kan finnas en, två eller tre oktala siffror n i octalvärdens utrymningssekvens.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow