C Language
Bokstäver för siffror, tecken och strängar
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 |
Escape Sequence | Representerade karaktär |
---|---|
\a | Varning (pip, klocka) |
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.