Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… c: Π‘ | Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… | Microsoft Docs

  • Π§Ρ‚Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2Β ΠΌΠΈΠ½

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ Microsoft C++ 32-bit ΠΈ 64-bit Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ Ρ‚ΠΈΠΏΡ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π΄Π°Π»Π΅Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

  • int (unsigned int)

  • __int8 (unsigned __int8)

  • __int16 (unsigned __int16)

  • __int32 (unsigned __int32)

  • __int64 (unsigned __int64)

  • short (unsigned short)

  • long (unsigned long)

  • long long (unsigned long long)

Если имя начинаСтся с Π΄Π²ΡƒΡ… символов подчСркивания (__), Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… являСтся нСстандартным.

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹, прСдставлСнныС Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ значСния.

Имя Ρ‚ΠΈΠΏΠ°Π‘Π°ΠΉΡ‚Ρ‹Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
int4signedΠžΡ‚ -2Β 147Β 483Β 648 Π΄ΠΎ 2Β 147Β 483Β 647
unsigned int4unsignedΠžΡ‚ 0 Π΄ΠΎ 4 294 967 295
__int81
char
ΠžΡ‚ -128 Π΄ΠΎ 127
unsigned __int81unsigned charΠžΡ‚ 0 Π΄ΠΎ 255
__int162short, short int, signed short intΠžΡ‚ -32Β 768 Π΄ΠΎ 32Β 767
unsigned __int162unsigned short, unsigned short intΠžΡ‚ 0 Π΄ΠΎ 65 535
__int324signed, signed int, intΠžΡ‚ -2Β 147Β 483Β 648 Π΄ΠΎ 2Β 147Β 483Β 647
unsigned __int324unsigned,
unsigned int
ΠžΡ‚ 0 Π΄ΠΎ 4 294 967 295
__int648long long, signed long longΠžΡ‚ -9Β 223Β 372Β 036Β 854Β 775Β 808 Π΄ΠΎ 9Β 223Β 372Β 036Β 854Β 775Β 807
unsigned __int648unsigned long longΠžΡ‚ 0 Π΄ΠΎ 18 446 744 073 709 551 615
bool1Π½Π΅Ρ‚false ΠΈΠ»ΠΈ true
char1Π½Π΅Ρ‚ΠΎΡ‚-128 Π΄ΠΎ 127 ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

ΠΎΡ‚ 0 Π΄ΠΎ 255 ΠΏΡ€ΠΈ компиляции с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ /J

signed char1Π½Π΅Ρ‚ΠžΡ‚ -128 Π΄ΠΎ 127
unsigned char1
Π½Π΅Ρ‚
ΠžΡ‚ 0 Π΄ΠΎ 255
short2short int, signed short intΠžΡ‚ -32Β 768 Π΄ΠΎ 32Β 767
unsigned short2unsigned short intΠžΡ‚ 0 Π΄ΠΎ 65 535
long4long int, signed long intΠžΡ‚ -2Β 147Β 483Β 648 Π΄ΠΎ 2Β 147Β 483Β 647
unsigned long4unsigned long intΠžΡ‚ 0 Π΄ΠΎ 4 294 967 295
long long8Π½Π΅Ρ‚ (Π½ΠΎ эквивалСнтно __int64 )ΠžΡ‚ -9Β 223Β 372Β 036Β 854Β 775Β 808 Π΄ΠΎ 9Β 223Β 372Β 036Β 854Β 775Β 807
unsigned long long
8Π½Π΅Ρ‚ (Π½ΠΎ эквивалСнтно unsigned __int64 )ΠžΡ‚ 0 Π΄ΠΎ 18 446 744 073 709 551 615
enumнСпостояннонСт
float4Π½Π΅Ρ‚3,4E +/- 38 (7 Π·Π½Π°ΠΊΠΎΠ²)
double8Π½Π΅Ρ‚1,7E +/- 308 (15 Π·Π½Π°ΠΊΠΎΠ²)
long doubleΡ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ doubleΠ½Π΅Ρ‚Π’ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ double
wchar_t2__wchar_tΠžΡ‚ 0 Π΄ΠΎ 65 535

Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, пСрСмСнная __wchar_t опрСдСляСт Π»ΠΈΠ±ΠΎ Ρ‚ΠΈΠΏ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ символа, Π»ΠΈΠ±ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ символ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ константу Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ символьного Ρ‚ΠΈΠΏΠ°, ΠΏΠ΅Ρ€Π΅Π΄ символьной ΠΈΠ»ΠΈ строковой константой слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСфикс

L .

signed ΠΈ unsigned β€” это ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ цСлочислСнным Ρ‚ΠΈΠΏΠΎΠΌ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ bool . ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ char , signed char ΠΈ unsigned char β€” это Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° для Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹.

int Π’ΠΈΠΏΡ‹ ΠΈ unsigned int ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±Π°ΠΉΡ‚Π°. Однако пСрСносимый ΠΊΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, int Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ языковой стандарт позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² зависимости ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

C ΠΈ C++ Π² Visual Studio Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ __int8, __int16, __int32, __int64

ΠΈ ограничСния Ρ†Π΅Π»Ρ‹Ρ… чисСл.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± ограничСниях Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ВстроСнныС Ρ‚ΠΈΠΏΡ‹.

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ пСрСчисляСмых Ρ‚ΠΈΠΏΠΎΠ² зависит ΠΎΡ‚ контСкста языка ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Ρ„Π»Π°ΠΆΠΊΠΎΠ² компилятора. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² ΡΡ‚Π°Ρ‚ΡŒΡΡ… ОбъявлСния пСрСчислСний C ΠΈ ОбъявлСния пСрСчислСний C++.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π»

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова
ВстроСнныС Ρ‚ΠΈΠΏΡ‹

Π£Ρ€ΠΎΠΊ 002. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ АрифмСтика

КаТдая пСрСмСнная ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ свой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, объявлСниС


int some_variable;

ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная some_variable ΠΈΠΌΠ΅Π΅Ρ‚ цСлочислСнный Ρ‚ΠΈΠΏ int.

ОбъявлСниС позволяСт ввСсти Π½Π΅ΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Данная пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…: цСлочислСнный, с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π² случаС Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ»ΠΈ кастомный Ρ‚ΠΈΠΏ (структура Π΄Π°Π½Π½Ρ‹Ρ…, класс). Π’ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ опрСдСляСт Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ произвСсти Π½Π°Π΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ опрСдСляСт Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ области памяти, которая трСбуСтся для Π½Π΅Ρ‘. А Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π±ΠΈΡ‚ΠΎΠ². ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°ΠΊΠΆΠ΅ нСсёт Π² сСбС Ρ‚ΠΎ имя, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ программист Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.

Π’ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠΌΠ΅Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая ΠΈΠΌΠ΅Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ цСлочислСнный Ρ‚ΠΈΠΏ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ арифмСтичСскиС дСйствия, дСйствия сравнСния, присваивания ΠΈ Ρ‚.Π΄. ΠžΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΊ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ some_variable.

Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

C++ прСдоставляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

void

void — являСтся Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… с пустым Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ЯвляСтся Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½Ρ‹ΠΌ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСн для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Однако, позволяСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ‚ΠΈΠΏ void, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ void Π² качСствС значСния, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ функциями.

nullptr

nullptr — особый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сам сСбС Π½Π΅ являСтся Ρ‚ΠΈΠΏΠΎΠΌ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π³ΠΎ нСльзя ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² качСствС Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ указатСля. Π”Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π±Ρ‹Π» Π²Π²Π΅Π΄Ρ‘Π½ в стандартС Б++11 вмСсто опрСдСляСмой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ макроконстанты NULL.

boolean

bool — логичСский Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true ΠΈΠ»ΠΈ false . Π Π°Π·ΠΌΠ΅Ρ€ памяти, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ 1 Π² зависимости ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΉ систСмС. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° sizeof(bool).

Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹

char — Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для прСдставлСния тСкстовых символов. Π Π°Π·ΠΌΠ΅Ρ€ символьного Ρ‚ΠΈΠΏΠ° char 1 Π±Π°ΠΉΡ‚, Ρ‡Ρ‚ΠΎ позволяСт ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ 256 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… символов. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ всСх символов ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ символов ASCII.

Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… дСлятся Π½Π° Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ°:

  • signed char — Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ
  • unsigned char — Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ
  • char — ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌ, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠ΄ компилятор.

Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • char -128…127
  • unsigned char 0…255

char ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для хранСния цСлочислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для цСлочислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ всё-Ρ‚Π°ΠΊΠΈ Ρ‚ΠΈΠΏ Int. Но Ρ‚Π°ΠΊΠΎΠ΅ допустимо для встраиваСмых систСм, с Тёстко ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠΌ памяти.

Π’Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ особыС Ρ‚ΠΈΠΏΡ‹ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…:

  • wchar_t — Ρ‚ΠΈΠΏ для прСдставлСния символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ нСдостаточно ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 32 Π±ΠΈΡ‚Π° для ОБ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… UNICODE, ΠΈΠ»ΠΈ 16 Π±ΠΈΡ‚ Π² Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Windows для UTF-16.
  • char16_t — тип для прСдставлСния UTF-16, Π²Π²Π΅Π΄Ρ‘Π½Β Π² стандартС C++11 .
  • char32_t — Ρ‚ΠΈΠΏ для прСдставлСния UTF-32, Π²Π²Π΅Π΄Ρ‘Π½ Π² стандартС C++11 .

int

int — цСлочислСнный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ памяти, выдСляСмый ΠΏΠΎΠ΄ этот Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Если Π½Π΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Ρ‚ΠΎ гарантируСтся, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 16-Ρ‚ΠΈ Π±ΠΈΡ‚. Однако, Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ 32/64 разрядных систСм гарантируСтся, Ρ‡Ρ‚ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 32-Ρ… Π±ΠΈΡ‚.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹

Π—Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹

  • signed — прСдставлСниС Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… (Ссли ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ, Ρ‚ΠΎ подразумСваСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ)
  • unsigned — прСдставлСниС Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

  • short — Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ‚ΠΈΠΏ оптимизируСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Ρ‹Π» Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 16 Π±ΠΈΡ‚
  • long — Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ‚ΠΈΠΏ оптимизируСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Ρ‹Π» Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 32 Π±ΠΈΡ‚

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ long ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π²Π°ΠΆΠ΄Ρ‹, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пространства Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 64 Π±ΠΈΡ‚. Данная оптимизация Π²Π²Π΅Π΄Π΅Π½Π° Π² стандартС C++11.

long long int

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ знаковости ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

signed long long int

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ

  • float — 32-Ρ… разрядный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.
  • double — 64-Ρ… разрядный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.
  • long double — Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ данных с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Π²Π²Π΅Π΄Ρ‘Π½ Π² стандартС C++11.

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎ использованию этих Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π°Ρ‡ΠΈΠ½Π°Π» с чистого C, Π° ΠΊΠ°ΠΊΠΎΠΉ Π½Π°Ρ‡ΠΈΠ½Π°Π» с C++. ПоголовноС использованиС float Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ с C, double ΠΆΠ΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π΅Π½ для C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, пСрСчислСнныС Π²Ρ‹ΡˆΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


int a = 12;       // ЦСлочислСнный Ρ‚ΠΈΠΏ, пСрСмСнная Ρ€Π°Π²Π½Π° 12
double b = 12.25; // ВСщСствСнный Ρ‚ΠΈΠΏ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности, пСрСмСнная Ρ€Π°Π²Π½Π° 12.25
char c = 'a';     // Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, пСрСмСнная Ρ€Π°Π²Π½Π° символу "a"

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ нСсколькими способами.


double a1 = 2.3;
double a2 = {2.3};
double a3 {2.3};

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ с Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° Π² стандартС C++11. ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками Π½Π΅ позволяСтся нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, поэтому компилятор выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях.


int d1 = {2.3};
int d2 {2.3};

auto

Π’Π°ΠΊΠΆΠ΅ для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² стандартС C++11 Π±Ρ‹Π» Π²Π²Π΅Π΄Ρ‘Π½ спСцификатор auto , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π±Π΅Π· указания Ρ‚ΠΈΠΏΠ°. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ‚ΠΈΠΏ выводится ΠΈΠ· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ значСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ присвоСно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ auto Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ


// ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ, Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
auto a = 14; 
// НС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π½Π΅ скомпилируСтся
auto b;
b = 15;

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ auto ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для объявлСния лямбда Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΎΡ‡Π΅Π½ΡŒ слоТным объявлСниСм, Ρ‡Ρ‚ΠΎ Π²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

АрифмСтика

Над ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ арифмСтичСски ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:


x+y   // слоТСниС
+x    // ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ плюс
x-y   // Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅
-x    // ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ минус
x*y   // ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅
x/y   // Π΄Π΅Π»Π΅Π½ΠΈΠ΅
x%y   // остаток ΠΎΡ‚ дСлСния

Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сравнСниС:


x==y  // Ρ€Π°Π²Π½ΠΎ
x!=y  // Π½Π΅ Ρ€Π°Π²Π½ΠΎ
x<y   // мСньшС Ρ‡Π΅ΠΌ
x>y   // большС Ρ‡Π΅ΠΌ
x<=y  // мСньшС Ρ‡Π΅ΠΌ ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ
x>=y  // большС Ρ‡Π΅ΠΌ ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ арифмСтичСским ΠΈ логичСским опСрациям Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» C++ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ спСцифичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:


x+=y  // x = x+y
++x   // increment: x = x+1
xβˆ’=y  // x = x-y
βˆ’βˆ’x   // decrement: x = x-1
xβˆ—=y  // x =x*y
x/=y  // x = x/y
x%=y  // x = x%y

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Go | DigitalOcean

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π²ΠΈΠ΄Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ с использованиСм Π΄Π°Π½Π½Ρ‹Ρ….

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Go. Π­Ρ‚ΠΎ Π½Π΅ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰Π΅Π΅ исслСдованиС Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΎΠ½ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с доступными Π² Go возмоТностями. ПониманиС основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивный ΠΈ понятный ΠΊΠΎΠ΄.

Базовая информация

Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… слСдуСт ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅. НапримСр, Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ числа. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа (0, 1, 2, …), Ρ†Π΅Π»Ρ‹Π΅ числа (…, -1, 0, 1, …) ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡ€Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ числа (Ο€).

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ‡Π΅Ρ‚Π°Ρ‚ΡŒ числа Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ слоТСния 5 ΠΈ Ο€:

5 + Ο€

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ уравнСния ΠΊΠ°ΠΊ ΠΎΡ‚Π²Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ€Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ число, ΠΈΠ»ΠΈ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ Ο€ Π΄ΠΎ числа с ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½Ρ‹ΠΌ количСством Π·Π½Π°ΠΊΠΎΠ² послС запятой, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ числа:

5 + Ο€ = 5 + 3.14 = 8.14

Однако Ссли ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ числа с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ слова, выраТСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ мСньшС смысла. Как ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅?

shark + 8

Для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² всС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, ΠΊΠ°ΠΊ слова ΠΈ числа. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ остороТно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ использованию Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… для назначСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ манипуляции этими значСниями посрСдством ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π¦Π΅Π»Ρ‹Π΅ числа

Как ΠΈ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊ Ρ†Π΅Π»Ρ‹ΠΌ числам относятся ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа, ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа ΠΈ 0 (…, -1, 0, 1, …). Π’ Go Ρ†Π΅Π»ΠΎΠ΅ число опрСдСляСтся ΠΊΠ°ΠΊ int. Как ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования, Π² числах Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ запятыС для отдСлСния Π½ΡƒΠ»Π΅ΠΉ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ вмСсто 1,000 Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ 1000.

Π¦Π΅Π»ΠΎΠ΅ число ΠΌΠΎΠΆΠ½ΠΎ вывСсти Π² простой Ρ„ΠΎΡ€ΠΌΠ΅:

fmt.Println(-459)

Output

-459

Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ символ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠ»ΠΈ измСняСмого числа, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

var absoluteZero int = -459
fmt.Println(absoluteZero)

Output

-459

Π’ Go ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ назначСния := для дСкларирования ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sum:

sum := 116 - 68
fmt.Println(sum)

Output

48

Как Π²ΠΈΠ΄Π½ΠΎ Π½Π° экранС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², матСматичСский ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ - Π±Ρ‹Π» использован для вычитания Ρ†Π΅Π»ΠΎΠ³ΠΎ числа 68 ΠΈΠ· 116, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ 48. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ОбъявлСниС Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π¦Π΅Π»Ρ‹Π΅ числа ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Go Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами. По ΠΌΠ΅Ρ€Π΅ дальнСйшСго изучСния Go Ρƒ вас появится ΠΌΠ½ΠΎΠ³ΠΎ возмоТностСй Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ знания ΠΎΠ± этом Ρ‚ΠΈΠΏΠ΅ Π΄Π°Π½Π½Ρ‹Ρ….

Числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой

Число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ *ΠΈΠ»ΠΈ float *β€” это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ нСльзя Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа. Π’ состав Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл входят всС Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΈΡ€Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ числа, ΠΈ поэтому числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 9,0 ΠΈΠ»ΠΈ -116,42. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ float Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Go, ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ числС с дСсятичной запятой.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ вывСсти число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Ρ‚Π°ΠΊ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ, ΠΊΠ°ΠΊ ΠΈ Ρ†Π΅Π»ΠΎΠ΅ число:

fmt.Println(-459.67)

Output

-459.67

Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ число Ρ‚ΠΈΠΏΠ° float:

absoluteZero := -459.67
fmt.Println(absoluteZero)

Output

-459.67

Π’ Go ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ ΠΈ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами:

var sum = 564.0 + 365.24
fmt.Println(sum)

Output

929.24

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΈ числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ 3 β‰  3.0, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ 3 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число, Π° 3.0 β€” число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ числовых Ρ‚ΠΈΠΏΠΎΠ²

Помимо различия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΈ числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Π² Go имССтся Π΄Π²Π° Ρ‚ΠΈΠΏΠ° числовых Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎ статичСскому ΠΈΠ»ΠΈ динамичСскому Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Ρƒ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚ΠΈΠΏ β€” это Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ-нСзависимый Ρ‚ΠΈΠΏ, ΠΈ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΠΈΡ‚Π°Ρ… Π½Π΅ измСняСтся Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ машинС выполняСтся ΠΊΠΎΠ΄.

БСгодня Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ систСмных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΈΠ»ΠΈ 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ прилоТСния для соврСмСнных Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΎΠ² с 64-Π±ΠΈΡ‚Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Windows. Однако, Ссли Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ прилоТСния для Ρ‚Π°ΠΊΠΈΡ… устройств, ΠΊΠ°ΠΊ фитнСс-браслСты, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ 32-битная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ-нСзависимый Ρ‚ΠΈΠΏ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ int32, Π²Π½Π΅ зависимости ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Ρƒ этого Ρ‚ΠΈΠΏΠ° Π±ΡƒΠ΄Π΅Ρ‚ постоянный Ρ€Π°Π·ΠΌΠ΅Ρ€.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΈΠΏ относится ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ этом Ρ‚ΠΈΠΏΠ΅ Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ построСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. НапримСр, Ссли ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚ΠΈΠΏ int ΠΏΡ€ΠΈ компиляции Π² Go для 32-Π±ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ 32 Π±ΠΈΡ‚Π°. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° компилируСтся для 64-Π±ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ 64 Π±ΠΈΡ‚Π°.

Помимо Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ Ρ†Π΅Π»Ρ‹Π΅ числа, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²Π° Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°: со Π·Π½Π°ΠΊΠΎΠΌ ΠΈ Π±Π΅Π· Π·Π½Π°ΠΊΠ°. int8 β€” это Ρ†Π΅Π»ΠΎΠ΅ число со Π·Π½Π°ΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ -128 Π΄ΠΎ 127. uint8 β€” Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 0 Π΄ΠΎ 255.

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ зависят ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π² Π±ΠΈΡ‚Π°Ρ…. Для Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… 8 Π±ΠΈΡ‚ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ 256 Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΈΠΏ int Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния, 8-Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число (int8) Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ -128 Π΄ΠΎ 127, Ρ‡Ρ‚ΠΎ соотвСтствуСт 256 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’ Go ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ-нСзависимыС Ρ‚ΠΈΠΏΡ‹ Ρ†Π΅Π»Ρ‹Ρ… чисСл:

uint8       unsigned  8-bit integers (0 to 255)
uint16      unsigned 16-bit integers (0 to 65535)
uint32      unsigned 32-bit integers (0 to 4294967295)
uint64      unsigned 64-bit integers (0 to 18446744073709551615)
int8        signed  8-bit integers (-128 to 127)
int16       signed 16-bit integers (-32768 to 32767)
int32       signed 32-bit integers (-2147483648 to 2147483647)
int64       signed 64-bit integers (-9223372036854775808 to 9223372036854775807)

Числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈ комплСксныС числа Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹:

float32     IEEE-754 32-bit floating-point numbers
float64     IEEE-754 64-bit floating-point numbers
complex64   complex numbers with float32 real and imaginary parts
complex128  complex numbers with float64 real and imaginary parts

Π’Π°ΠΊΠΆΠ΅ сущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² псСвдонимов чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…:

byte        alias for uint8
rune        alias for int32

ПсСвдоним byte Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² качСствС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния элСмСнтов символьной строки Π±Π°ΠΉΡ‚Ρ‹, Π° Π½Π΅ ΠΌΠ°Π»Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа, Π½Π΅ связанныС с ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π°ΠΉΡ‚Π°Ρ…. Π₯отя послС компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ byte ΠΈ uint8 Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹, byte часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдставлСния ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² числовой Ρ„ΠΎΡ€ΠΌΠ΅, Π° uint8 прСдполагаСтся ΠΊΠ°ΠΊ число Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

ПсСвдоним rune Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся ΠΎΡ‚ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ. Если byte ΠΈ uint8 содСрТат ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, rune ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±Π°ΠΉΡ‚Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² int32 Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. rune ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдставлСния символа Unicode, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ символы ASCII ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… int32.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Go ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ для ΠΊΠΎΠ½Ρ€ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ:

uint     unsigned, either 32 or 64 bits
int      signed, either 32 or 64 bits
uintptr  unsigned integer large enough to store the uninterpreted bits of a pointer value

Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠΎΠ² для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ опрСдСляСтся Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ скомпилирована ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

Π’Ρ‹Π±ΠΎΡ€ числовых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…

Π’Ρ‹Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° большС зависит ΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Ρ‡Π΅ΠΌ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅. Однако Ссли Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ особыС трСбования вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ· этих Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ.

Как ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΈΠΏΡ‹, Π½Π΅ зависящиС ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΈ Ρ‚ΠΈΠΏΡ‹, зависящиС ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Для цСлочислСнных Π΄Π°Π½Π½Ρ‹Ρ… Π² Go ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ int ΠΈΠ»ΠΈ uint вмСсто int64 ΠΈΠ»ΠΈ uint64. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅. НапримСр, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ int64 ΠΈ выполняСтС ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π΄ΠΎ 32-Π±ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π·Π°ΠΉΠΌΠ΅Ρ‚ Π² Π΄Π²Π° Ρ€Π°Π·Π° мСньшС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для пСрСмСщСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссорныС Ρ†ΠΈΠΊΠ»Ρ‹. Если Π²Ρ‹ использовали int, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° опрСдСляСт 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ для 32-Π±ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС.

Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², Π²Ρ‹Π±ΠΎΡ€ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ-нСзависимого Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ. НапримСр, Ссли Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ваши Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ прСвысят Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 100 ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами, Π²Ρ‹Π±ΠΎΡ€ uint8 сдСлаСт Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±ΠΎΠ»Π΅Π΅ эффСктивной, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ мСньшС памяти.

ΠœΡ‹ рассмотрСли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² числовых Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π² случаС ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΡ этих Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Π² нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ цикличСский ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄

ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ сохранСния значСния, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ возмоТности Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π² Go Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ цикличСский ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, рассчитываСтся Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ компиляции ΠΈΠ»ΠΈ Π²ΠΎ врСмя исполнСния Ошибка ΠΏΡ€ΠΈ компиляции Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ сборки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π²ΠΎ врСмя фактичСского выполнСния ΡƒΠΆΠ΅ скомпилированной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π·Π°Π΄Π°Π΄ΠΈΠΌ для maxUint32 максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

package main

import "fmt"

func main() {
    var maxUint32 uint32 = 4294967295 // Max uint32 size
    fmt.Println(maxUint32)
}

ПослС компиляции ΠΈ запуска ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Output

4294967295

Если ΠΌΡ‹ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΠΌ 1 ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния, ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ цикличСский ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° 0:

Output

0

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ 1 ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈ Π΅Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎ компиляции:

package main

import "fmt"

func main() {
    var maxUint32 uint32 = 4294967295 + 1
    fmt.Println(maxUint32)

}

Π’ΠΎ врСмя компиляции, Ссли компилятор опрСдСляСт, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ слишком большоС для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сообщСниС ΠΎΠ± ошибкС пСрСполнСния. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ рассчитанноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ слишком большоС для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ компилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΎΠ½ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ сообщСниС ΠΎΠ± ошибкС:

Output

prog.go:6:36: constant 4294967296 overflows uint32

ПониманиС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ошибок ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

ΠœΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ числовых Ρ‚ΠΈΠΏΠ°Ρ…, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΡŽ логичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… boolean ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ истина ΠΈΠ»ΠΈ лоТь ΠΈ опрСдСляСтся ΠΊΠ°ΠΊ bool ΠΏΡ€ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для прСдставлСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ истины, связанных с логичСским ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅.

ЗначСния true ΠΈ false всСгда ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ символами t ΠΈ f Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² Go.

МногиС матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°ΡŽΡ‚ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСниям «истина» ΠΈΠ»ΠΈ «лоТь»:

  • большС Ρ‡Π΅ΠΌ
    • 500 > 100 истина
    • 1 > 5 лоТь
  • мСньшС Ρ‡Π΅ΠΌ
    • 200 < 400 истина
    • 4 < 2 лоТь
  • Ρ€Π°Π²Π½ΠΎ
    • 5 = 5 истина
    • 500 = 400 лоТь

Как ΠΈ для чисСл, значСния логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

myBool := 5 > 8

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ логичСского ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° посрСдством Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fmt.Println():

fmt.Println(myBool)

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ 5 Π½Π΅ большС 8, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Output

false

Π§Π΅ΠΌ большС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½Π° Go, Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ влияниС ΠΎΡ†Π΅Π½ΠΊΠΈ истинности ΠΈ лоТности Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ

Π‘Ρ‚Ρ€ΠΎΠΊΠ° β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… символов (Π±ΡƒΠΊΠ²Ρ‹, числа, символы), которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой константу ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ` ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ " Π² Go ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ характСристики Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π²Ρ‹ создаСтС Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π». Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π²Ρ‹ создаСтС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π».

НСобработанныС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ строк

НСобработанныС строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ символ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ отобраТаСтся, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ самих символов ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ.

a := `Say "hello" to Go!`
fmt.Println(a)

Output

Say "hello" to Go!

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Π² строках ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ косой Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ. НапримСр, Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ строкС \n прСдставляСт Π½ΠΎΠ²ΡƒΡŽ строчку Π² строкС. Однако Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² строк обратная косая Ρ‡Π΅Ρ€Ρ‚Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ особого значСния:

a := `Say "hello" to Go!\n`
fmt.Println(a)

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π΅ строки обратная косая Ρ‡Π΅Ρ€Ρ‚Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ особого значСния, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ \n вмСсто создания Π½ΠΎΠ²ΠΎΠΉ строки:

Output

Say "hello" to Go!\n

НСобработанныС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ строк Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для создания строк, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… нСсколько строчСк:

a := `This string is on
multiple lines
within a single back
quote on either side.`
fmt.Println(a)

Output

This string is on multiple lines within a single back quote on either side.

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π±Π»ΠΎΠΊΠ°Ρ… ΠΊΠΎΠ΄Π° Π½ΠΎΠ²Ρ‹Π΅ строчки Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠ»ΠΈΡΡŒ ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ строк

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "bar". Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ любой символ, ΠΊΡ€ΠΎΠΌΠ΅ символа Π½ΠΎΠ²ΠΎΠΉ строчки ΠΈ Π½Π΅Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Для отобраТСния Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ строкС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΊΠΎΡΡƒΡŽ Ρ‡Π΅Ρ€Ρ‚Ρƒ Π² качСствС символа ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°:

a := "Say \"hello\" to Go!"
fmt.Println(a)

Output

Say "hello" to Go!

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ всСгда Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ экранированиС символов Π²Π½ΡƒΡ‚Ρ€ΠΈ строк. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ строках ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅, посвящСнной основам Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками Π² Go.

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ с символами UTF-8

UTF-8 β€” это схСма ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ символов ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ Π² 1-4 Π±Π°ΠΉΡ‚Π°Ρ…. Go ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ символы UTF-8 Π±Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… настроСк, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². ЛатинскиС символы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π±ΡƒΠΊΠ²Π° A, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ASCII, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, числом 65. Однако ΠΏΡ€ΠΈ использовании ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΉ символ δΈ–, трСбуСтся UTF-8. Go ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏ псСвдонима rune для Π΄Π°Π½Π½Ρ‹Ρ… UTF-8.

a := "Hello, δΈ–η•Œ"

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово range Π² Ρ†ΠΈΠΊΠ»Π΅ for для индСксации Π»ΡŽΠ±Ρ‹Ρ… строк Π² Go, Π² Ρ‚ΠΎΠΌ числС строк UTF-8. ΠœΡ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ расскаТСм ΠΎ Ρ†ΠΈΠΊΠ»Π°Ρ… for ΠΈ ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌ словС range ΠΏΠΎΠ·Π΄Π½Π΅Π΅, Π° сСйчас Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для подсчСта количСства Π±Π°ΠΉΡ‚ Π² строкС:

package main

import "fmt"

func main() {
    a := "Hello, δΈ–η•Œ"
    for i, c := range a {
        fmt.Printf("%d: %s\n", i, string(c))
    }
    fmt.Println("length of 'Hello, δΈ–η•Œ': ", len(a))
}

Π’ Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π° Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ a ΠΈ Π½Π°Π·Π½Π°Ρ‡ΠΈΠ»ΠΈ для Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Hello, δΈ–η•Œ. НазначСнный тСкст содСрТит символы UTF-8.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ использовали стандартный Ρ†ΠΈΠΊΠ» for ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово range. Π’ Go ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово range индСксируСт строку, возвращая ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ символу, Π° Ρ‚Π°ΠΊΠΆΠ΅ выполняСт Π±Π°ΠΉΡ‚ΠΎΠ²ΡƒΡŽ ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ символа Π² строкС.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fmt.Printf ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ строку Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° %d: %s\n. %d β€” это ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†ΠΈΡ„Ρ€Ρ‹ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ†Π΅Π»ΠΎΠ³ΠΎ числа), Π° %s β€” ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ строки. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π·Π°Π΄Π°Π»ΠΈ значСния i ΠΈΠ»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ индСкса Ρ†ΠΈΠΊΠ»Π° for,Π° Ρ‚Π°ΠΊΠΆΠ΅ c, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ символ Ρ†ΠΈΠΊΠ»Π° for.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΡ‹ распСчатали ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ a с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ len.

ΠœΡ‹ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ rune являСтся псСвдонимом int32 ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· 1-4 Π±Π°ΠΉΡ‚. Для опрСдСлСния символа δΈ– трСбуСтся Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π°, ΠΈ индСкс пСрСмСщаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π² строкС UTF-8. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ i Π½Π΅ выполняСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Output

0: H 1: e 2: l 3: l 4: o 5: , 6: 7: δΈ– 10: η•Œ length of 'Hello, δΈ–η•Œ': 13

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π΄Π»ΠΈΠ½Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ количСство ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° строки.

Π’Ρ‹ Π½Π΅ всСгда Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строки UTF-8, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ относятся ΠΊ Ρ‚ΠΈΠΏΡƒ rune, Π° Π½Π΅ int32.

Π”Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π’Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ², ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ этих Ρ‚ΠΈΠΏΠΎΠ² для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Go.

Π’ Go ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова var, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ΄ΡƒΡ‚ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ pi Ρ‚ΠΈΠΏΠ° float64.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ дСкларируСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово var:

var pi float64

Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ pi:

var pi float64

ПослСдним ΠΈΠ΄Π΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… float64:

var pi float64

ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 3.14:

var pi float64 = 3.14

Go β€” это язык статичСских Ρ‚ΠΈΠΏΠΎΠ². ИспользованиС статичСских Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ провСряСтся Π²ΠΎ врСмя компиляции. Π’Π°ΠΊΠΆΠ΅ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… привязан ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠ°ΠΊ Π² динамичСски связанных языках Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… привязан ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

НапримСр, Π² Go Ρ‚ΠΈΠΏ дСкларируСтся ΠΏΡ€ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

var pi float64 = 3.14
var week int = 7

КаТдая ΠΈΠ· этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, Ссли Π²Ρ‹ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΈΡ… ΠΏΠΎ Ρ€Π°Π·Π½ΠΎΠΌΡƒ.

Π­Ρ‚ΠΈΠΌ Go отличаСтся ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… языков ΠΊΠ°ΠΊ PHP, Π³Π΄Π΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… привязываСтся ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ:

$s = "sammy";         // $s is automatically a string
$s = 123;             // $s is automatically an integer

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π° пСрвая пСрСмСнная $s являСтся строкой, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅ΠΉ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "sammy", Π° вторая являСтя Ρ†Π΅Π»Ρ‹ΠΌ числом, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅ΠΉ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 123.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим Π±ΠΎΠ»Π΅Π΅ слоТныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… β€” массивы.

ΠœΠ°ΡΡΠΈΠ²Ρ‹

Массив прСдставляСт собой ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов. Π’ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ массива опрСдСляСтся Π²ΠΎ врСмя создания. ПослС опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива Π΅Π³ΠΎ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массив ΠΈΠΌΠ΅Π΅Ρ‚ статичный Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΏΠ°ΠΌΡΡ‚ΡŒ для Π½Π΅Π³ΠΎ выдСляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ массивы ΠΌΠ΅Π½Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ, Π½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ массивы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π‘Ρ€Π΅Π·Ρ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ общСпринятой ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ массивов, примСняСмой Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ посрСдством дСкларирования Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива ΠΈ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок { }.

Массив строк Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

[3]string{"blue coral", "staghorn coral", "pillar coral"}

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ массив Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ:

coral := [3]string{"blue coral", "staghorn coral", "pillar coral"}
fmt.Println(coral)

Output

[blue coral staghorn coral pillar coral]

Как ΠΌΡ‹ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, срСзы ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° массивы, Π½ΠΎ ΠΏΡ€ΠΈ этом Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΡƒΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Ρ€Π΅Π·Ρ‹

Π‘Ρ€Π΅Π·Ρ‹ β€” это упорядочСнная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов, Π΄Π»ΠΈΠ½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. Π Π°Π·ΠΌΠ΅Ρ€ срСзов ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ динамичСски. Если ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π² срСз Π½ΠΎΠ²Ρ‹Ρ… элСмСнтов Π² срСзС оказываСтся нСдостаточно памяти, ΠΎΠ½ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Π² систСмС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ срСз ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ для добавлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ массивы.

Π‘Ρ€Π΅Π·Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ посрСдством дСкларирования Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки [], Π° значСния ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках { }.

Π‘Ρ€Π΅Π· Ρ†Π΅Π»Ρ‹Ρ… чисСл выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

[]int{-3, -2, -1, 0, 1, 2, 3}

Π‘Ρ€Π΅Π· чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

[]float64{3.14, 9.23, 111.11, 312.12, 1.05}

Π‘Ρ€Π΅Π· строк выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

[]string{"shark", "cuttlefish", "squid", "mantis shrimp"}

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ срСз строк ΠΊΠ°ΠΊ seaCreatures:

seaCreatures := []string{"shark", "cuttlefish", "squid", "mantis shrimp"}

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ посрСдством Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

fmt.Println(seaCreatures)

Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ созданный Π½Π°ΠΌΠΈ список:

Output

[shark cuttlefish squid mantis shrimp]

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово append для добавлСния элСмСнтов Π² срСз. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° добавляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ строки seahorse Π² срСз:

seaCreatures = append(seaCreatures, "seahorse")

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ посрСдством Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

fmt.Println(seaCreatures)

Output

[shark cuttlefish squid mantis shrimp seahorse]

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ссли Π²Π°ΠΌ трСбуСтся ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ нСизвСстным количСством элСмСнтов, срСз Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ, Ρ‡Π΅ΠΌ массив.

ΠšΠ°Ρ€Ρ‚Ρ‹

ΠšΠ°Ρ€Ρ‚Π° β€” это встроСнный Π² Go Ρ‚ΠΈΠΏ Ρ…ΡΡˆΠ° ΠΈΠ»ΠΈ словаря. ΠšΠ°Ρ€Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ для быстрого просмотра Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ индСксу ΠΈΠ»ΠΈ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС) ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ. НапримСр, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°Ρ€Ρ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с индСксациСй ΠΏΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠšΠ»ΡŽΡ‡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. ΠšΠ°Ρ€Ρ‚Π° создаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова map с Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π° Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках [ ], Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ΄ΡƒΡ‚ ΠΏΠ°Ρ€Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠ»ΡŽΡ‡ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках.

map[key]value{}

ΠšΠ°Ρ€Ρ‚Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для хранСния связанных Π΄Π°Π½Π½Ρ‹Ρ…, Π² Ρ‚ΠΎΠΌ числС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΈ выглядят ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

map[string]string{"name": "Sammy", "animal": "shark", "color": "blue", "location": "ocean"}

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΈΠΌΠΎ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок ΠΊΠ°Ρ€Ρ‚Π° содСрТит двоСточия. Π‘Π»ΠΎΠ²Π° слСва ΠΎΡ‚ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ. ΠšΠ»ΡŽΡ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ относится ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ *comparable *Ρ‚ΠΈΠΏΡƒ Π² Go. Π‘Ρ€Π°Π²Π½ΠΈΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ β€” это Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ², Π² Ρ‚ΠΎΠΌ числС строки, Ρ†Π΅Π»Ρ‹Π΅ числа ΠΈ Ρ‚. Π΄. Π’ΠΈΠΏ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π° опрСдСляСтся языком, Π° Π½Π΅ составляСтся посрСдством сочСтания Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ². Π₯отя допускаСтся использованиС опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ², Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ошибок программирования ΠΈΡ… Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ простыми. Π’ словарС Π²Ρ‹ΡˆΠ΅ содСрТатся ΠΊΠ»ΡŽΡ‡ΠΈ: name, animal, color ΠΈ location.

Π‘Π»ΠΎΠ²Π° справа ΠΎΡ‚ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ значСниями. ЗначСния ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· любого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. ЗначСния Π² словарС Π²Ρ‹ΡˆΠ΅: Sammy, shark, blue ΠΈ ocean.

Π”Π°Π²Π°ΠΉΡ‚Π΅ сохраним ΠΊΠ°Ρ€Ρ‚Ρƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π΅Π΅:

sammy := map[string]string{"name": "Sammy", "animal": "shark", "color": "blue", "location": "ocean"}
fmt.Println(sammy)

Output

map[animal:shark color:blue location:ocean name:Sammy]

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚ Sammy, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² sammy["color"]. РаспСчатаСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

fmt.Println(sammy["color"])

Output

blue

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для хранСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ элСмСнтом вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Go.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ основныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, доступныС для использования Π² Go. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π²Π°ΠΆΠ΅Π½ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° языкС Go.

Когда Π²Ρ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ΡΡŒ с доступными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Go, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² зависимости ΠΎΡ‚ ситуации.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² языкС Π‘ΠΈ (C)

Имя

Π Π°Π·ΠΌΠ΅Ρ€

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅ΠΌΡ‹Π΅ значСния

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½

(signed) char

1 Π±Π°ΠΉΡ‚

символы
Ρ†Π΅Π»Ρ‹Π΅ числа

Β 
ΠΎΡ‚ –128 Π΄ΠΎ 127

(signed) short int

2 Π±Π°ΠΉΡ‚Π°

Ρ†Π΅Π»Ρ‹Π΅ числа

ΠΎΡ‚ -32768 Π΄ΠΎ 32767

(signed) int

зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
(Π² послСдних компиляторах ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 4 Π±Π°ΠΉΡ‚Π°)

Ρ†Π΅Π»Ρ‹Π΅ числа

Β 

(signed) long int

4 Π±Π°ΠΉΡ‚Π°

Ρ†Π΅Π»Ρ‹Π΅ числа

ΠΎΡ‚ -2147483648 Π΄ΠΎ 2147483647

unsigned char

1 Π±Π°ΠΉΡ‚

символы
Ρ†Π΅Π»Ρ‹Π΅ числа

Β 
ΠΎΡ‚ 0 Π΄ΠΎ 255

unsigned short int

2 Π±Π°ΠΉΡ‚Π°

Ρ†Π΅Π»Ρ‹Π΅ числа

0 Π΄ΠΎ 65535

unsigned int

зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
(Π² послСдних компиляторах ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 4 Π±Π°ΠΉΡ‚Π°)

Ρ†Π΅Π»Ρ‹Π΅ числа

Β 

unsigned long int

4 Π±Π°ΠΉΡ‚Π°

Ρ†Π΅Π»Ρ‹Π΅ числа

ΠΎΡ‚ 0 Π΄ΠΎ 4294967295

float

4 Π±Π°ΠΉΡ‚Π°

вСщСствСнныС числа

ΠΎΡ‚ 1.175494351e–38
Π΄ΠΎ 3.402823466e+38

double

8 Π±Π°ΠΉΡ‚

вСщСствСнныС числа

ΠΎΡ‚ 2.2250738585072014e–308
Π΄ΠΎ 1.7976931348623158e+308

long double

зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

вСщСствСнныС числа

Β 

Π’ языкС C Ρ‚Π°ΠΊΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ пСрСчислимый Ρ‚ΠΈΠΏ – enum , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся подмноТСством Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΈ пустой Ρ‚ΠΈΠΏ – void, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ для объявлСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° void. Π’Π°ΠΊΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ ΠΊ указатСлям Π½Π° любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ.

Π’ языкС Π‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ структуры ΠΈ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ объСдинСния.

Π’ языкС C Π½Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² для массивов, строк (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ массивом символов), ΠΈ для логичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ЛогичСскиС значСния ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΏΡ€ΠΈ этом Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 соотвСтствуСт логичСскому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ лоТь, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ значСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ логичСскому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ истина. Π­Ρ‚ΠΈΠΌ свойством языка C ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ€Π°Π²Π½ΠΎΠ΅ 0, Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎΠ± отсутствии Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ° Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ значСния говорят ΠΎ Π΅Π³ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ, ΠΈ ΠΏΡ€ΠΈ этом нСсут ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Π’ языкС Π‘ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅ Ρ‚Π°ΠΊ силён, ΠΊΠ°ΠΊ Π² ПаскалС. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ присвоСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ производятся прСобразования ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для привСдСния ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρ‚ΠΈΠΏΡƒ:

  • всС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Ρ‚ΠΈΠΏΠ° float ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ double ;
  • Ссли ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ double , Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ double ;
  • Ссли ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ unsigned long , Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ unsigned long ;
  • Ссли ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ long int , Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ long int ;
  • Ссли ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ unsigned int , Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ unsigned int ;
  • всС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² char ΠΈ short ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ int ;
  • всС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² unsigned char ΠΈ unsigned short ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ unsigned int ;
  • ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ int .

Π’ языкС Π‘ Π½Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ символом ΠΈ ΠΊΠΎΠ΄ΠΎΠΌ символа, Ρ‚.ΠΊ. Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти символ ΠΈ Ρ‚Π°ΠΊ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅ Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, хранящСй символ, ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ 1 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Ρ‚ΠΈΠΏΠΎΠ² языка Π‘ ΠΌΠΎΠΆΠ½ΠΎ (Π½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ!) ΠΎΠ±ΠΎΠΉΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ привСдСния Ρ‚ΠΈΠΏΠ°.

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… C ++ | ΠŸΠΎΡ€Ρ‚Π°Π» ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ для Π³ΠΈΠΊΠΎΠ²

ВсС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ врСмя объявлСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ сохранСны. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ. Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° пСрСмСнная ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² C ++, компилятор выдСляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ для этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° основС Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½Π° объявлСна. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ объСма памяти.

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² C ++ Π² основном дСлятся Π½Π° Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ°:

  1. ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… . Π­Ρ‚ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ встроСнными ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ нСпосрСдствСнно для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠΏΡ€ΠΈΠΌΠ΅Ρ€: int, char, float, bool ΠΈ Ρ‚. Π΄. ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, доступныС Π² C ++:
    • Ρ†Π΅Π»ΠΎΠ΅ число
    • символ
    • логичСский
    • ΠŸΠ»Π°Π²Π°ΡŽΡ‰Π°Ρ запятая
    • Двойная Ρ‚ΠΎΡ‡ΠΊΠ° с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ
    • БСссмыслСнный ΠΈΠ»ΠΈ ΠŸΡƒΡΡ‚ΠΎΠΉ
    • Π¨ΠΈΡ€ΠΎΠΊΠΈΠΉ Π₯Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€
  2. Π’ΠΈΠΏΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΈΠ»ΠΈ встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Они ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:
    • функция
    • массив
    • Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ
    • Бсылка
  3. АбстрактныС ΠΈΠ»ΠΈ опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… : эти Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ самим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. НапримСр, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ класса Π² C ++ ΠΈΠ»ΠΈ структуры. C ++ прСдоставляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…:
    • Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ класс
    • Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°
    • союз
    • пСрСчислСниС
    • ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ΡΡ typedef DataType

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, доступныС Π² C ++.

  • Integer : ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, β€” int . Π¦Π΅Π»Ρ‹Π΅ числа, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ 4 Π±Π°ΠΉΡ‚Π° пространства памяти ΠΈ находятся Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ -2147483648 Π΄ΠΎ 2147483647.
  • Π‘ΠΈΠΌΠ²ΠΎΠ» : ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния символов. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для символьного Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… β€” char . Π‘ΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, трСбуСтся 1 Π±Π°ΠΉΡ‚ пространства памяти, ΠΈ ΠΎΠ½ находится Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ -128 Π΄ΠΎ 127 ΠΈΠ»ΠΈ ΠΎΡ‚ 0 Π΄ΠΎ 255.
  • Boolean : логичСский Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния логичСских ΠΈΠ»ΠΈ логичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π‘ΡƒΠ»Π΅Π²Π° пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΠΈΠ±ΠΎ true, Π»ΠΈΠ±ΠΎ false . ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для логичСского Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… β€” bool .
  • ΠŸΠ»Π°Π²Π°ΡŽΡ‰Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° : Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ точности ΠΈΠ»ΠΈ дСсятичных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, являСтся float . ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ 4 Π±Π°ΠΉΡ‚Π° пространства памяти.
  • Double Floating Point : Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Double Floating Point ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности ΠΈΠ»ΠΈ дСсятичных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, β€” double . Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ 8 Π±Π°ΠΉΡ‚ памяти.
  • void : Void ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ цСнности. Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… void прСдставляСт собой Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ. ΠŸΡƒΡΡ‚ΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ‚Π΅Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
  • Π¨ΠΈΡ€ΠΎΠΊΠΈΠΉ символ : Π¨ΠΈΡ€ΠΎΠΊΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ этот Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ большС, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ 8-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΎ wchar_t . ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это 2 ΠΈΠ»ΠΈ 4 Π±Π°ΠΉΡ‚Π°.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…

Как слСдуСт ΠΈΠ· названия, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ со встроСнными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… для измСнСния Π΄Π»ΠΈΠ½Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….63)-1unsigned long long int80 to 18,446,744,073,709,551,615signed char1-128 to 127unsigned char10 to 255float4double8long double12wchar_t2 or 41 wide character

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ . Π’Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ значСния ΠΌΠΎΠ³ΡƒΡ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ компилятора ΠΊ компилятору. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ рассмотрСли GCC 64 Π±ΠΈΡ‚.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ всСх Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sizeof () ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:


#include<iostream>

using namespace std;

Β Β 

int main()

{

Β Β Β Β cout << "Size of char : " << sizeof(char)Β 

Β Β Β Β Β Β << " byte" << endl;

Β Β Β Β cout << "Size of int : " << sizeof(int)

Β Β Β Β Β Β << " bytes" << endl;

Β Β Β Β cout << "Size of short int : " << sizeof(short int)Β 

Β Β Β Β Β Β << " bytes" << endl;

Β Β Β Β cout << "Size of long int : " << sizeof(long int)Β 

Β Β Β Β Β Β Β << " bytes" << endl;

Β Β Β Β cout << "Size of signed long int : " << sizeof(signed long int)

Β Β Β Β Β Β Β << " bytes" << endl;

Β Β Β Β cout << "Size of unsigned long int : " << sizeof(unsigned long int)Β 

Β Β Β Β Β Β Β << " bytes" << endl;

Β Β Β Β cout << "Size of float : " << sizeof(float)Β 

Β Β Β Β Β Β Β << " bytes" <<endl;

Β Β Β Β cout << "Size of double : " << sizeof(double)Β 

Β Β Β Β Β Β Β << " bytes" << endl;

Β Β Β Β cout << "Size of wchar_t : " << sizeof(wchar_t)Β 

Β Β Β Β Β Β Β << " bytes" <<endl;

Β Β Β Β Β Β 

Β Β Β Β return 0;

}

Π’Ρ‹Ρ…ΠΎΠ΄:

Size of char : 1 byte
Size of int : 4 bytes
Size of short int : 2 bytes
Size of long int : 8 bytes
Size of signed long int : 8 bytes
Size of unsigned long int : 8 bytes
Size of float : 4 bytes
Size of double : 8 bytes
Size of wchar_t : 4 bytes

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ прСдоставлСна Π‘ΡƒΡ€ΠΎΠ²Ρ‹ΠΌ Агарвалом . Если Π²Ρ‹ ΠΊΠ°ΠΊ GeeksforGeeks ΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ внСсти свой Π²ΠΊΠ»Π°Π΄, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ contribute.geeksforgeeks.org ΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΠΎΡ‡Ρ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ [email protected]. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ свою ΡΡ‚Π°Ρ‚ΡŒΡŽ, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΡƒΡŽΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ страницС GeeksforGeeks, ΠΈ ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π²ΡƒΠ½Π΄Π΅Ρ€ΠΊΠΈΠ½Π΄Π°ΠΌ.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ссли Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ обсуТдаСмой Π²Ρ‹ΡˆΠ΅ Ρ‚Π΅ΠΌΠ΅.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ посты:

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… C ++

0.00 (0%) 0 votes

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… unsigned. Π―Π·Ρ‹ΠΊ Π‘ΠΈ

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ‚Π΅ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»Π°ΡΡŒ Π² Π³Π»Π°Π²Π΅ 6, Π° сСйчас ΠΌΡ‹ лишь ΠΊΡ€Π°Ρ‚ΠΊΠΎ рассмотрим послСдниС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² этой области. Π‘Ρ€Π°Π·Ρƒ ΠΎΡ‚ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ возмоТностСй ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² AS/400 β€” ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Ρ… Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ нашСй Ρ€Π°Π±ΠΎΡ‚Ρ‹.Π― ΡƒΠΆΠ΅

Экспорт Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Access 2007 Π² список SharePoint

Экспорт Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Access 2007 Π² список SharePoint Access 2007 позволяСт ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ внСшний Ρ„Π°ΠΉΠ», Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… dBase ΠΈΠ»ΠΈ Paradox, Ρ„Π°ΠΉΠ» Lotus 1–2–3, рабочая ΠΊΠ½ΠΈΠ³Π° Excel 2007, Ρ„Π°ΠΉΠ» Word 2007 RTF, тСкстовый Ρ„Π°ΠΉΠ», Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ XML

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Access 2007 Π½Π° ΡƒΠ·Π΅Π» SharePoint

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Access 2007 Π½Π° ΡƒΠ·Π΅Π» SharePoint ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Access 2007 ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ сборС Π΄Π°Π½Π½Ρ‹Ρ…. Часто Ρ‚Π°ΠΊΠΈΠ΅ прилоТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹Π΅ потрСбности Π²

18.1. Архивация Π΄Π°Π½Π½Ρ‹Ρ…

18.1. Архивация Π΄Π°Π½Π½Ρ‹Ρ… Под Π°Ρ€Ρ…ΠΈΠ²Π°Ρ†ΠΈΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… слСдуСт ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ пСриодичСскоС созданиС ΠΊΠΎΠΏΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ настроСк Π»ΠΈΡ‡Π½ΠΎΠΉ записи, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для Π²Ρ…ΠΎΠ΄Π° Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму.О Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ архивация Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π½Π΅Π΅ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡŒ,

БпасСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

БпасСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ всС Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ дСйствия Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±Π°Π·Π° ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π° ΠΈ Π»ΠΈΠ±ΠΎ совсСм Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡŽ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅, Π»ΠΈΠ±ΠΎ для Π΅Π΅ восстановлСния понадобится

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с CD-RW

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с CD-RW ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° CloneCD Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с пСрСзаписываСмого ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-диска нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ записью, поэтому CD-RW Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅.1.Β Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-диск для ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ записи Π² ΠΏΡ€ΠΈΠ²ΠΎΠ΄ ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΌΡ‹ΡˆΡŒΡŽ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π‘Ρ‚ΠΈΡ€Π°Π½ΠΈΠ΅ CD-RW.

Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… 1. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ прСимущСства Π½ΠΎΠ²ΠΎΠ³ΠΎ 32-разрядного Borland Database Engine? Новый 32-разрядный Borland Database Engine Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½ΠΎΠ²ΠΎΠ΅ ядро запросов, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ°ΠΊ с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ SQL-сСрвСрами, Ρ‚Π°ΠΊ ΠΈ с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. 32-разрядный Borland Database

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ процСссора Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ процСссора Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Помимо ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ врСмя Π²Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, слСдуСт Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ процСссора Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. Вакая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ примСняСтся нСзависимо

ОбновлСниС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ…

ОбновлСниС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ… АдаптСры Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ для вас Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° DataSet. Они ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² основных SQL-ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΡ… для возвращСния ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅

Π“Π»Π°Π²Π° 2 Π’Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΈΠΏΡ‹, ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹, Π΄Π°Π½Π½Ρ‹Ρ…

Π“Π»Π°Π²Π° 2 Π’Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΈΠΏΡ‹, ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹, Π΄Π°Π½Π½Ρ‹Ρ… Π Π°Π±ΠΎΡ‚Π° с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Excel сопряТСна с Π²Π²ΠΎΠ΄ΠΎΠΌ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΠ½ Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ тСкстовой, числовой, финансовой, статистичСской ΠΈ Ρ‚. Π΄. ΠœΠ£Π›Π¬Π’Π˜ΠœΠ•Π”Π˜Π™ΠΠ«Π™ КУРБ ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π²ΠΎΠ΄Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

МодСль Π΄Π°Π½Π½Ρ‹Ρ… <> Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…

МодСль Π΄Π°Π½Π½Ρ‹Ρ… &lt;&gt; Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π’ΠΎΡ‚ «ΠΌΠΈΡ€», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Π² процСссС описания ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°, являСтся Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠΎΠΌ для структур Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. БчитаСтся, Ρ‡Ρ‚ΠΎ логичСская модСль Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΈ Π½Π°Π±ΠΎΡ€Ρ‹. ΠžΠ±Ρ‹Ρ‡Π½Π°Ρ ошибка (ΠΈ западня, присущая всСм инструмСнтам CASE) слСпо

Наборы Π΄Π°Π½Π½Ρ‹Ρ…

Наборы Π΄Π°Π½Π½Ρ‹Ρ… Запрос DML опрСдСляСт Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ…, упорядочСнных слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ столбцов, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ Π½Π°Π±ΠΎΡ€ΠΎΠΌ. Запрос ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π½Π°Π±ΠΎΡ€Π° ΠΎΠ΄Π½ΠΎΠΉ строкой ΠΈΠ»ΠΈ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· мноТСства строк. Π’

Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (классы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…)

Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (классы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…) Π’ MFC Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ нСсколько классов, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ это классы ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ODBC Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ – CDatabase ΠΈ CRecordSet. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Π½ΠΎΠ²Ρ‹Π΅ срСдства для

6.5 Unsigned

6.5 Unsigned ВсСгда ΠΏΡ€ΠΈ сочСтании Ρ†Π΅Π»ΠΎΠ³ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ unsigned ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ unsigned. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ являСтся наимСньшСС Ρ†Π΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Ρ€Π°Π²Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠΌΡƒ со Π·Π½Π°ΠΊΠΎΠΌ (mod 2**(Ρ€Π°Π·ΠΌΠ΅Ρ€ слова)) (Ρ‚.Π΅. ΠΏΠΎ ΠΌΠ΄ΡƒΠ»ΡŽ 2**(Ρ€Π°Π·ΠΌΠ΅Ρ€ слова)). Π’ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ

Digital Chip

ВсС Π΄Π°Π½Π½Ρ‹Π΅ Π² языкС Π‘ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ свой Ρ‚ΠΈΠΏ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π² памяти ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ мСсто, Ρ€Π°Π·Π½ΠΎΠ΅ Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ°. Π’ Π‘ΠΈ Π½Π΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ закрСплСния количСства памяти Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΎΡ‚Π΄Π°Π½ΠΎ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ компилятора ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ. НапримСр, пСрСмСнная Ρ‚ΠΈΠΏΠ° int Π² ΠΎΠ΄Π½ΠΎΠΌ компиляторС ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π² памяти 16 Π±ΠΈΡ‚, Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ β€” 32 Π±ΠΈΡ‚Π°, Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ β€” 8 Π±ΠΈΡ‚. ВсС опрСдСляСт ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ компилятор. ΠŸΡ€Π°Π²Π΄Π°, всС стрСмятся ΠΊ унивСрсализации, ΠΈ Π² основном Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ компиляторов Ρ‚ΠΈΠΏ int, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π±Π°ΠΉΡ‚Π°, Π° Ρ‚ΠΈΠΏ char β€” ΠΎΠ΄ΠΈΠ½.

Π― Π² послСднСС врСмя Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Ρ‚ΡƒΠΏΠΈΠ», Π½Π΅ ΠΌΠΎΠ³ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, сколько Π±Π°ΠΉΡ‚ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΈΠΏ double Π² AVR-GCC. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΡˆΡŒ с цСлочислСнными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Ρ‚ΠΈΠΏΠ° int ΠΈ char, Π° ΠΊ Ρ‚ΠΈΠΏΠ°ΠΌ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ±Π΅Π³Π°Π΅ΡˆΡŒ Π½Π΅ часто, Π² связи с ΠΈΡ… Ρ€Π΅ΡΡƒΡ€ΡΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒΡŽ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅, ΠΎΡΡ‚Π°Π²Π»ΡŽ сСбС здСсь памятку с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ памяти Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… для компилятора AVR-GCC ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ измСнСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… этого Ρ‚ΠΈΠΏΠ°.

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² языкС Π‘ΠΈ для компилятора AVR-GCC

Π’ΠΈΠΏΠ Π°Π·ΠΌΠ΅Ρ€ Π²
Π±Π°ΠΉΡ‚Π°Ρ… (Π±ΠΈΡ‚Π°Ρ…)
Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» измСнСния
char1 (8)-128 .. 127
unsigned char1 (8)0 .. 255
signed char1 (8)-128 .. 127
int2 (16)-32768 .. 32767
unsigned int2 (16)0 .. 65535
signed int2 (16)-32768 .. 32767
short int2 (16)-32768 .. 32767
unsigned short int2 (16)0 .. 65535
signed short int2 (16)-32768 .. 32767
long int4 (32)-2147483648 .. 2147483647
unsigned long int4 (32)0 .. 4294967295
signed long int4 (32)-2147483648 .. 2147483647
float4 (32)3.4Π•-38 .. 3.4Π•+38
double4 (32)3.4Π•-38 .. 3.4Π•+38
long double10 (80)3.4Π•-4932 .. 3.4Π•+4932

[stextbox id=Β»warningΒ» caption=Β»ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅Β»]РСализация Ρ‚ΠΈΠΏΠ° double Π² AVR-GCC отступаСт ΠΎΡ‚ стандарта. По стандарту double Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 64 Π±ΠΈΡ‚Π°. Π’ AVR-GCC пСрСмСнная этого Ρ‚ΠΈΠΏΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 32 Π±ΠΈΡ‚Π°, ΠΈ соотвСтствСнно, ΠΎΠ½Π° эквивалСнтна ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Ρ‚ΠΈΠΏΠΎΠΌ float![/stextbox]

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ этому, Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… AVR-GCC Π²Π²Π΅Π΄Π΅Π½ΠΎ нСсколько ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΎΡ‚ стандартных Ρ‚ΠΈΠΏΠΎΠ². Они описаны Π² Ρ„Π°ΠΉΠ»Π΅ stdint.h. Π‘Π΄Π΅Π»Π°Π½ΠΎ это, Π½Π°Π²Π΅Ρ€Π½ΠΎ, для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ наглядности ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (ускорСния ΠΈΡ… написания :)). Π’ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΠ° соотвСтствия:

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΡ‚ стандартных Π² языкС Π‘ΠΈ для компилятора AVR-GCC

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏΠ‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ
int8_tsigned char
uint8_tunsigned char
int16_tsigned int
uint16_tunsigned int
int32_tsigned long int
uint32_tunsigned long int
int64_tsigned long long int
uint64_tunsigned long long int

Π’ΠΈΠΏ Void

Π’ языкС Π‘ΠΈ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ β€” Ρ‚ΠΈΠΏ void. Void ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания, Ρ‡Ρ‚ΠΎ функция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, ΠΈΠ»ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Π½Π΅ примСняСтся для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, соотвСтствСнно ΠΎΠ½ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ мСста Π² памяти.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ARM C ΠΈ C ++

Home / Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ компилятора

10.2 Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ARM C ΠΈ C ++

ΠžΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ основныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² ARM C ΠΈ C ++:

Π Π°Π·ΠΌΠ΅Ρ€ ΠΈ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ СстСствСнноС Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π°Π±Π»ΠΈΡ†Π° 10-2 Π Π°Π·ΠΌΠ΅Ρ€ ΠΈ соотвСтствиС Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…

Π’ΠΈΠΏ Π Π°Π·ΠΌΠ΅Ρ€ Π² Π±ΠΈΡ‚Π°Ρ… ЕстСствСнноС Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡ‚Π°Ρ… Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
символ 8 1 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π±Π°ΠΉΡ‚Π°ΠΌ)

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ 0 Π΄ΠΎ 255 (Π±Π΅Π· Π·Π½Π°ΠΊΠ°).

ΠΎΡ‚ –128 Π΄ΠΎ 127 (со Π·Π½Π°ΠΊΠΎΠΌ) ΠΏΡ€ΠΈ компиляции с --signed_chars .

символ со Π·Π½Π°ΠΊΠΎΠΌ 8 1 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π±Π°ΠΉΡ‚Π°ΠΌ)

–128 Π΄ΠΎ 127

символ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 8 1 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π±Π°ΠΉΡ‚Π°ΠΌ)

0 Π΄ΠΎ 255

(подпись) короткая 16 2 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ полуслову) –32 768 Π΄ΠΎ 32 767
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 16 2 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ полуслову) 0 Π΄ΠΎ 65 535
(подпись) Π²Π½ΡƒΡ‚Ρ€ 32 4 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ словам) –2 147 483 648 Π΄ΠΎ 2 147 483 647
Ρ†Π΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 32 4 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ словам) 0 Π΄ΠΎ 4 294 967 295
(подпись) Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 32 4 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ словам) –2 147 483 648 Π΄ΠΎ 2 147 483 647
Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 32 4 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ словам) 0 Π΄ΠΎ 4 294 967 295
(подпись) длинная длинная 64 8 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌΡƒ слову) –9,223,372,036,854,775,808 Π΄ΠΎ 9,223,372,036,854,775,807
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 64 8 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌΡƒ слову) 0 Π΄ΠΎ 18 446 744 073 709 551 615
ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ 32 4 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ словам) 1.175494351e-38 Π΄ΠΎ 3.40282347e + 38 (Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ значСния)
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ 64 8 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌΡƒ слову) 2.22507385850720138e-308 Π΄ΠΎ 1.79769313486231571e + 308 (Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ значСния)
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ 64 8 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌΡƒ слову) 2.22507385850720138e-308 ΠΊ 1.79769313486231571e + 308 (Π½ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ значСния)
wchar_t

16

32

2 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ полуслову)

4 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ словам)

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ 0 Π΄ΠΎ 65 535.

0 Π΄ΠΎ 4,294,967,295 ΠΏΡ€ΠΈ компиляции с --wchar32 .

ВсС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ 32 4 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ словам) НС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ.
bool (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ C ++) 8 1 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π±Π°ΠΉΡ‚Π°ΠΌ) лоТь ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²Π΄Π°
_ Π‘ΠΎΠ»Ρ‚ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ C a ) 8 1 (с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π±Π°ΠΉΡ‚Π°ΠΌ) лоТь ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²Π΄Π°

Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² зависит ΠΎΡ‚ контСкста:

  • Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ хранятся Π² рСгистрах, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² стСк, ΠΎΠ½ΠΈ всСгда Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ словам.НапримСр, разлитая локальная пСрСмСнная char ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ 4.

  • ЕстСствСнноС Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° 1.

Π¦Π΅Π»ΠΎΠ΅

Π¦Π΅Π»Ρ‹Π΅ числа прСдставлСны Π² Π²ΠΈΠ΄Π΅ дополнСния Π΄ΠΎ Π΄Π²ΡƒΡ…. Низкий слово Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ находится ΠΏΠΎ ΠΌΠ»Π°Π΄ΡˆΠ΅ΠΌΡƒ адрСсу Π² Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прямого порядка Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈ ΠΏΠΎ ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΌΡƒ адрСсу Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прямого порядка Π±Π°ΠΉΡ‚ΠΎΠ².

Поплавок

Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой хранятся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ IEEE:

Для количСства double ΠΈ long double слово, содСрТащСС Π·Π½Π°ΠΊ, ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ стСпСни ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ Ρ‡Π°ΡΡ‚ΡŒ мантиссы сохраняСтся с младшим адрСсом ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π² Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прямого порядка Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈ ΠΏΠΎ ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΌΡƒ адрСсу Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прямого порядка Π±Π°ΠΉΡ‚ΠΎΠ².

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ утвСрТдСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎ всСм указатСлям Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² C ΠΈ C ++, ΠΊΡ€ΠΎΠΌΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ‡Π»Π΅Π½Ρ‹:

  • БосСдниС Π±Π°ΠΉΡ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ адрСса ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½.

  • ΠœΠ°ΠΊΡ€ΠΎΡ NULL Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ Π΄ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0.

  • ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΈ указатСлями ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π±Π΅Π· измСнСния ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°.

  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π΅Ρ‚ ΠΎ привСдСниях ΠΌΠ΅ΠΆΠ΄Ρƒ указатСлями Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅.

  • Π’ΠΈΠΏ size_t опрСдСляСтся ΠΊΠ°ΠΊ Π±Π΅Π· Π·Π½Π°ΠΊΠ° int .

  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ ptrdiff_t ΠΊΠ°ΠΊ подписано int .

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… | Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Microsoft

  • 2 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅

32-разрядныС ΠΈ 64-разрядныС компиляторы Microsoft C ++ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ Ρ‚ΠΈΠΏΡ‹, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π΄Π°Π»Π΅Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

  • int ( Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ int )

  • __int8 ( Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ __int8 )

  • __int16 ( Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ __int16 )

  • __int32 ( Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ __int32 )

  • __int64 ( Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ __int64 )

  • ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ( Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ )

  • Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ( Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ )

  • Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ( Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ )

Если Π΅Π³ΠΎ имя начинаСтся с Π΄Π²ΡƒΡ… Π·Π½Π°ΠΊΠΎΠ² подчСркивания ( __ ), Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… нСстандартный.

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

НазваниС Ρ‚ΠΈΠΏΠ° Π±Π°ΠΉΡ‚ΠΎΠ² Π”Ρ€ΡƒΠ³ΠΈΠ΅ названия Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ 4 подписано -2 147 483 648 Π΄ΠΎ 2 147 483 647
Π¦Π΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 4 Π±Π΅Π· Π·Π½Π°ΠΊΠ° 0 Π΄ΠΎ 4 294 967 295
__int8 1 символ -128 до 127
Π±Π΅Π· Π·Π½Π°ΠΊΠ° __int8 1 символ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΎΡ‚ 0 Π΄ΠΎ 255
__int16 2 ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ , ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ , подписанный ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ -32 768 Π΄ΠΎ 32 767
Π±Π΅Π· Π·Π½Π°ΠΊΠ° __int16 2 Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ , Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ int 0 Π΄ΠΎ 65 535
__int32 4 подпись , подпись Π²Π½ΡƒΡ‚Ρ€ , Π²Π½ΡƒΡ‚Ρ€ -2 147 483 648 Π΄ΠΎ 2 147 483 647
Π±Π΅Π· Π·Π½Π°ΠΊΠ° __int32 4 Π±Π΅Π· Π·Π½Π°ΠΊΠ° , Π±Π΅Π· Π·Π½Π°ΠΊΠ° int 0 Π΄ΠΎ 4 294 967 295
__int64 8 Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ , подписанный Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ -9,223,372,036,854,775,808 Π΄ΠΎ 9,223,372,036,854,775,807
Π±Π΅Π· Π·Π½Π°ΠΊΠ° __int64 8 Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 0 Π΄ΠΎ 18 446 744 073 709 551 615
Π±ΡƒΠ»Π΅Π² 1 Π½Π΅Ρ‚ Π»ΠΎΠΆΠ½Ρ‹ΠΉ ΠΈΠ»ΠΈ истинный
символ 1 Π½Π΅Ρ‚ ΠΎΡ‚ -128 Π΄ΠΎ 127 ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

ΠΎΡ‚ 0 Π΄ΠΎ 255 ΠΏΡ€ΠΈ компиляции с использованиСм / J

символ со Π·Π½Π°ΠΊΠΎΠΌ 1 Π½Π΅Ρ‚ -128 Π΄ΠΎ 127
символ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 1 Π½Π΅Ρ‚ ΠΎΡ‚ 0 Π΄ΠΎ 255
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ 2 ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ , подписанноС ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ -32 768 Π΄ΠΎ 32 767
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 2 Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ int 0 Π΄ΠΎ 65 535
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 4 Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ int , подписанный Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ int -2 147 483 648 Π΄ΠΎ 2 147 483 647
Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 4 Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ 0 Π΄ΠΎ 4 294 967 295
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 8 Π½Π΅Ρ‚ (Π½ΠΎ эквивалСнтно __int64 ) -9,223,372,036,854,775,808 Π΄ΠΎ 9,223,372,036,854,775,807
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 8 Π½Π΅Ρ‚ (Π½ΠΎ эквивалСнтно Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ __int64 ) 0 Π΄ΠΎ 18 446 744 073 709 551 615
пСрСчислСниС Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π½Π΅Ρ‚
с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой 4 Π½Π΅Ρ‚ 3.4E +/- 38 (7 Ρ†ΠΈΡ„Ρ€)
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ 8 Π½Π΅Ρ‚ 1.7E +/- 308 (15 Ρ†ΠΈΡ„Ρ€)
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π½Π΅Ρ‚ Π’ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ
wchar_t 2 __wchar_t 0 Π΄ΠΎ 65 535

Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, пСрСмСнная __wchar_t ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΡˆΠΈΡ€ΠΎΠΊΠΈΡ… символов ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… символов.Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ прСфикс L ΠΏΠ΅Ρ€Π΅Π΄ символьной ΠΈΠ»ΠΈ строковой константой для обозначСния константы Ρ‚ΠΈΠΏΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… символов.

со Π·Π½Π°ΠΊΠΎΠΌ ΠΈ Π±Π΅Π· Π·Π½Π°ΠΊΠ° — это ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ цСлочислСнным Ρ‚ΠΈΠΏΠΎΠΌ, ΠΊΡ€ΠΎΠΌΠ΅ bool . ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ char , signed char ΠΈ unsigned char — это Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° для Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹.

Π’ΠΈΠΏΡ‹ int ΠΈ unsigned int ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±Π°ΠΉΡ‚Π°. Однако пСрСносимый ΠΊΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° int , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ стандарт языка допускаСт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это зависСло ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

C / C ++ Π² Visual Studio Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ см. __int8, __int16, __int32, __int64 ΠΈ цСлочислСнныС ограничСния.

Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ограничСниях Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° см. ВстроСнныС Ρ‚ΠΈΠΏΡ‹.

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ пСрСчисляСмых Ρ‚ΠΈΠΏΠΎΠ² зависит ΠΎΡ‚ языкового контСкста ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² компилятора. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ см. ОбъявлСния ΠΈ пСрСчислСния пСрСчислСний C.

Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова
ВстроСнныС Ρ‚ΠΈΠΏΡ‹

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² C — javatpoint

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… опрСдСляСт Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ пСрСмСнная, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ†Π΅Π»Ρ‹Π΅, ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠ΅, ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ Ρ‚. Π”.

Π’ языкС C Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΈΠΏΡ‹ Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…
Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… int, char, float, double
Π’ΠΈΠΏ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… массив, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, структура, объСдинСниС
Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… пСрСчислСния enum
ΠŸΡƒΡΡ‚ΠΎΡ‚Π° Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΡƒΡΡ‚ΠΎΡ‚Π°

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… основаны Π½Π° Ρ†Π΅Π»Ρ‹Ρ… числах ΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой. Π―Π·Ρ‹ΠΊ C ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ подписанныС, Ρ‚Π°ΠΊ ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹.

Π Π°Π·ΠΌΠ΅Ρ€ памяти для основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ 32- ΠΈΠ»ΠΈ 64-разрядной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° основныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π•Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π°Π²Π΅Π½ согласно 32-Π±ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ .

бСз знака символ бСз знака4 бСз знака
Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π Π°Π·ΠΌΠ΅Ρ€ памяти Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
символов 1 Π±Π°ΠΉΡ‚ ΠΎΡ‚ βˆ’128 Π΄ΠΎ 127
символов со Π·Π½Π°ΠΊΠΎΠΌ 1 Π±Π°ΠΉΡ‚ βˆ’128 Π΄ΠΎ 127
1 Π±Π°ΠΉΡ‚ ΠΎΡ‚ 0 Π΄ΠΎ 255
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ 2 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ βˆ’32,768 Π΄ΠΎ 32,767
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ со Π·Π½Π°ΠΊΠΎΠΌ 2 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ βˆ’32,768 Π΄ΠΎ 32,767
2 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ 0 Π΄ΠΎ 65,535
int 2 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ βˆ’32,768 Π΄ΠΎ 32,767
int со Π·Π½Π°ΠΊΠΎΠΌ 2 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ βˆ’32,768 Π΄ΠΎ 32,767
0 Π±Π°ΠΉΡ‚7,483472 649 648-2648-26486
ΠΎΡ‚ 0 Π΄ΠΎ 65,535
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ int 2 Π±Π°ΠΉΡ‚Π° βˆ’32,768 Π΄ΠΎ 32,767
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число со Π·Π½Π°ΠΊΠΎΠΌ 2 Π±Π°ΠΉΡ‚Π° βˆ’32,768 Π΄ΠΎ 32,767
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 2 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ 0 Π΄ΠΎ 65,535
Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ int 4 Π±Π°ΠΉΡ‚ΠΎΠ²
Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число со Π·Π½Π°ΠΊΠΎΠΌ 4 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ -2 147 483 648 Π΄ΠΎ 2 147 483 647
Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 4 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ 0 Π΄ΠΎ 4 294 967 295
с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой
8 Π±Π°ΠΉΡ‚
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ 10 Π±Π°ΠΉΡ‚

ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ C

РСзюмС : Π² этом руководствС Π²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ C , Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ†Π΅Π»Ρ‹Π΅ числа со Π·Π½Π°ΠΊΠΎΠΌ ΠΈ Π±Π΅Π· Π·Π½Π°ΠΊΠ°.

C цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² со Π·Π½Π°ΠΊΠΎΠΌ

C прСдоставляСт Π²Π°ΠΌ ΠΏΡΡ‚ΡŒ цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² со Π·Π½Π°ΠΊΠΎΠΌ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ цСлочислСнного Ρ‚ΠΈΠΏΠ° Π΅ΡΡ‚ΡŒ нСсколько синонимов.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡΡ‚ΡŒ цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ синонимами:

подписанный подписанный int
ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ Π‘ΠΈΠ½ΠΎΠ½ΠΈΠΌΡ‹ ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ
подписанный char
int
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ int, подписанный ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ, подписанный ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ int
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ int, подписанный Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ, подписанный Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ int
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ int, signed long long, signed long long int Доступно с C99

ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ C Π±Π΅Π· Π·Π½Π°ΠΊΠ°

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа со Π·Π½Π°ΠΊΠΎΠΌ C Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ цСлочислСнный Ρ‚ΠΈΠΏ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ памяти, Ρ‡Ρ‚ΠΎ ΠΈ цСлочислСнный Ρ‚ΠΈΠΏ со Π·Π½Π°ΠΊΠΎΠΌ .

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ‚ΠΈΠΏ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ°:

ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ со Π·Π½Π°ΠΊΠΎΠΌ Π’ΠΈΠΏΡ‹ Ρ†Π΅Π»Ρ‹Ρ… чисСл Π±Π΅Π· Π·Π½Π°ΠΊΠ°
char unsigned char
int unsigned int
unsigned short
long unsigned long
long long unsigned long long

Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² C

C Ρ‚ΠΎΡ‡Π½ΠΎ опрСдСляСт ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ памяти для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ цСлочислСнного Ρ‚ΠΈΠΏΠ° e.g., short Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π΄Π²ΡƒΡ… Π±Π°ΠΉΡ‚ΠΎΠ², long Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 4 Π±Π°ΠΉΡ‚ΠΎΠ². НСзависимо ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ C, Ρ€Π°Π·ΠΌΠ΅Ρ€ цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ порядку:

sizeof (short) & lt; sizeof (int) & lt; sizeof (Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ) & lt; sizeof (long long)

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² Π² C:

Π±Π΅Π· Π·Π½Π°ΠΊΠ° 900 03 2 Π±Π°ΠΉΡ‚Π°
Π’ΠΈΠΏ Π Π°Π·ΠΌΠ΅Ρ€ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
символ 1 Π±Π°ΠΉΡ‚-128 127
символ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 1 Π±Π°ΠΉΡ‚ 0 255
символ знак 127
int 2 Π±Π°ΠΉΡ‚Π° ΠΈΠ»ΠΈ 4 Π±Π°ΠΉΡ‚Π° -32,768 ΠΈΠ»ΠΈ -2,147,483,648 32,767 ΠΈΠ»ΠΈ 2,147,483,647
int ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ 2 Π±Π°ΠΉΡ‚Π°-32,768 32,767
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ 0 65,535
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 4 Π±Π°ΠΉΡ‚Π° -2 147 483 648 2 147 483 647
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 4 Π±Π°ΠΉΡ‚Π° 9000,24 0 0 0 0 0 8 Π±Π°ΠΉΡ‚ -9,223,372,036, 854,775,808 9,223,372,036, 854,775,807
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ 8 Π±Π°ΠΉΡ‚ΠΎΠ² 0 18,446,744,073, 0 18,446,744,073, Ρ†Π΅Π»Ρ‹Π΅ числа ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ 90 18,446,744,673 Π»ΠΈΠΌΠΈΡ‚ΠΎΠ².h Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» . Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° содСрТит макросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, INT_MIN , INT_MAX для минимального ΠΈ максимального Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ†Π΅Π»ΠΎΠ³ΠΎ числа.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ²

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ цСлочислСнного Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ sizeof () . Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° дСмонстрируСт, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ sizeof () для получСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² Π² вашСй систСмС.

1

2

3

4

5

6

7

8

9

10

11

12

16

17

18

/ *

* Π€Π°ΠΉΠ»: main.c

* Автор: zentut.com

* НазначСниС: ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ²

* /

#include < stdio.h>

int main ()

{

printf («sizeof (ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ) =% d Π±Π°ΠΉΡ‚ΠΎΠ² \ n», sizeof (ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ));

printf («sizeof (int) =% d bytes \ n», sizeof (int));

printf («sizeof (unsigned int) =% d Π±Π°ΠΉΡ‚ΠΎΠ² \ n», sizeof (unsigned int));

printf («sizeof (long) =% d bytes \ n», sizeof (long));

Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 0;

}

Π’ нашСй систСмС выводится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

sizeof (short) = 2 Π±Π°ΠΉΡ‚Π°

sizeof (int) = 4 Π±Π°ΠΉΡ‚Π°

sizeof (unsigned int) = 4 Π±Π°ΠΉΡ‚Π°

sizeof (long) = 4 Π±Π°ΠΉΡ‚Π°

Π’ этом руководствС ΠΌΡ‹ прСдставили Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ C ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ sizeof () для получСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² Π² вашСй систСмС.

  • Π‘Ρ‹Π»ΠΎ Π»ΠΈ это руководство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ?
  • Π”Π° НСт

Π Π°Π·ΠΌΠ΅Ρ€ слова ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π Π°Π·ΠΌΠ΅Ρ€ слова ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘Π»ΠΎΠ²ΠΎ — это количСство Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ машина ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π­Ρ‚ΠΎ вписываСтся Π² аналогию с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ символы (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ восСмь Π±ΠΈΡ‚) ΠΈ страницы (ΠΌΠ½ΠΎΠ³ΠΎ слов, часто Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 4 ΠΈΠ»ΠΈ 8 ΠšΠ‘) Π² качСствС Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π»ΠΎΠ²ΠΎ — это Ρ†Π΅Π»ΠΎΠ΅ число Π±Π°ΠΉΡ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ΄ΠΈΠ½, Π΄Π²Π°, Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΈΠ»ΠΈ восСмь. Когда ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ «n-Π±ΠΈΡ‚Π°Ρ…» ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΎΠ½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Π² Π²ΠΈΠ΄Ρƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ машинного слова.НапримСр, ΠΊΠΎΠ³Π΄Π° люди говорят, Ρ‡Ρ‚ΠΎ Pentium — это 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‡ΠΈΠΏ, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π² Π²ΠΈΠ΄Ρƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΅Π³ΠΎ слова, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ составляСт 32 Π±ΠΈΡ‚Π° ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±Π°ΠΉΡ‚Π°.

Π Π°Π·ΠΌΠ΅Ρ€ рСгистров ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (GPR) процСссора Ρ€Π°Π²Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Π΅Π³ΠΎ слова. Π¨ΠΈΡ€ΠΈΠ½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² Π΄Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, шинС памяти, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ мСньшС ΡˆΠΈΡ€ΠΈΠ½Ρ‹ слова. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Linux, адрСсноС пространство памяти Ρ€Π°Π²Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ слова [2] . Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ€Π°Π·ΠΌΠ΅Ρ€ указатСля Ρ€Π°Π²Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ слова.ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° long Π² C Ρ€Π°Π²Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ слова, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° int ΠΈΠ½ΠΎΠ³Π΄Π° мСньшС, Ρ‡Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ слова. НапримСр, Alpha ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ слова 64 Π±ΠΈΡ‚Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, рСгистры, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π»ΠΈΠ½Ρƒ 64 Π±ΠΈΡ‚Π°. Однако Ρ‚ΠΈΠΏ int ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ 32 Π±ΠΈΡ‚Π°. Alpha ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ 64-Π±ΠΈΡ‚Π½Ρ‹ΠΌ словам ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

НСкоторыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы ΠΈ процСссоры Π½Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ стандартный Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… словом.ВмСсто этого слово ΠΈΠΌΠ΅Π΅Ρ‚ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€, основанный Π½Π° истории ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ… ΠΏΠΎ имСнованию. НапримСр, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ систСмы ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π±Π°ΠΉΡ‚Ρ‹ (8 Π±ΠΈΡ‚), слова (16 Π±ΠΈΡ‚), Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ слова (32 Π±ΠΈΡ‚Π°) ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Π½Ρ‹Π΅ слова (64 Π±ΠΈΡ‚Π°), нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ рассматриваСмая систСма ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 32-Π±ΠΈΡ‚Π½ΠΎΠΉ. Π’ этой ΠΊΠ½ΠΈΠ³Π΅ ΠΈ Π² Linux Π² Ρ†Π΅Π»ΠΎΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ — это стандартный Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… процСссора, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅.

КаТдая поддСрТиваСмая Π² Linux Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° опрСдСляСт BITS_PER_LONG Π² Π΄ΠΎ Π΄Π»ΠΈΠ½Ρ‹ Ρ‚ΠΈΠΏΠ° C long, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ систСмного слова. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ ΠΈ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ прСдставлСн Π² Π’Π°Π±Π»ΠΈΡ†Π΅ 19.1.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ C явно оставляСт Ρ€Π°Π·ΠΌΠ΅Ρ€ стандартных Ρ‚ΠΈΠΏΠΎΠ² Π½Π° усмотрСниС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ, хотя ΠΈ Π΄ΠΈΠΊΡ‚ΡƒΠ΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€. ΠΠ΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ стандартных Ρ‚ΠΈΠΏΠΎΠ² C Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… являСтся ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ плюсом ΠΈ минусом. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, стандартныС Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ слов Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…, ΠΈ для Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅ трСбуСтся явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€.Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° C long Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ машинного слова. Однако с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΊΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ стандартныС Ρ‚ΠΈΠΏΡ‹ C ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ, Ρ‡Ρ‚ΠΎ int ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ ΠΈ long.

Битуация становится Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ трСбуСтся связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ пространствС ядра. АрхитСктура sparc64 прСдоставляСт 32-Π±ΠΈΡ‚Π½ΠΎΠ΅ пространство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, поэтому ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π° Ρ‚ΠΈΠΏΡ‹ int ΠΈ long ΡΠ²Π»ΡΡŽΡ‚ΡΡ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ.Однако Π² пространствС ядра sparc64 ΠΈΠΌΠ΅Π΅Ρ‚ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ int, 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹. Однако это Π½Π΅ Π½ΠΎΡ€ΠΌΠ°.

НСкоторыС ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ:

  • Π‘ΠΈΠΌΠ²ΠΎΠ» всСгда состоит ΠΈΠ· восьми Π±ΠΈΡ‚ΠΎΠ².

  • Π₯отя Π½Π΅ сущСствуСт ΠΏΡ€Π°Π²ΠΈΠ»Π°, согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ‚ΠΈΠΏ int Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ, ΠΎΠ½ присутствуСт Π² Linux Π½Π° всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π² настоящСС врСмя Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ….

  • Π’ΠΎ ΠΆΠ΅ самоС ΠΈ для ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ составляСт 16 Π±ΠΈΡ‚ Π½Π° всСх Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…, хотя Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ явно Π½Π΅ прСдписываСт это.

  • Никогда Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ указатСля ΠΈΠ»ΠΈ long, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 32 ΠΈΠ»ΠΈ 64 Π±ΠΈΡ‚ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π² настоящСС врСмя Π² Linux.

  • ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ long Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π² зависимости ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ sizeof (int) Ρ€Π°Π²Π΅Π½ sizeof (long).

  • Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ int ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€.

НСпрозрачныС Ρ‚ΠΈΠΏΡ‹

НСпрозрачныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ свой Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈΠ»ΠΈ структуру.Они ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ Β«Ρ‡Π΅Ρ€Π½Ρ‹Π΅ ящики», ΠΊΠ°ΠΊ ΠΈ Π² C. Для Π½ΠΈΡ… Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ языковой ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ. ВмСсто этого Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ typedef, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΅Π³ΠΎ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ ΠΈ Π½Π°Π΄Π΅ΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π²Π΅Ρ€Π½Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ стандартному Ρ‚ΠΈΠΏΡƒ C. ВсС использованиС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ интСрфСйсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ pid_t, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ процСсса. ЀактичСский Ρ€Π°Π·ΠΌΠ΅Ρ€ этого Ρ‚ΠΈΠΏΠ° Π½Π΅ Ρ€Π°Π·Π³Π»Π°ΡˆΠ°Π΅Ρ‚ΡΡ, хотя любой ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ…ΠΈΡ‚Ρ€ΠΈΡ‚ΡŒ, Π²Π·ΡΡ‚ΡŒ ΠΏΠΈΠΊ ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ это int. Если Π² ΠΊΠΎΠ΄Π΅ явно Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€ этого Ρ‚ΠΈΠΏΠ°, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±Π΅Π· особых Ρ…Π»ΠΎΠΏΠΎΡ‚.Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΈ Π±Ρ‹Π»ΠΎ: Π² старых систСмах Unix pid_t Π±Ρ‹Π» объявлСн ΠΊΠ°ΠΊ short.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° — atomic_t. Как ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Π² Π³Π»Π°Π²Π΅ 9 Β«ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ синхронизации ядра», этот Ρ‚ΠΈΠΏ содСрТит цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎ. Π₯отя этот Ρ‚ΠΈΠΏ являСтся int, использованиС Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… функциях Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. НСпрозрачный Ρ‚ΠΈΠΏ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ всСгда Π±Ρ‹Π» ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ 32 Π±ΠΈΡ‚Π°ΠΌΠΈ ΠΈΠ·-Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ 32-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ SPARC.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² ядрС Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ dev_t, gid_t ΠΈ uid_t.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

  • НС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π°.

  • НС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² стандартный Ρ‚ΠΈΠΏ C.

  • ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ свой ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ фактичСскоС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠ³Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ.

ΠžΡΠΎΠ±Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹

НСкоторыС Π΄Π°Π½Π½Ρ‹Π΅ Π² ядрС, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ прСдставлСны Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….Π”Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° — это счСтчик jiffy ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ flags, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠ±Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Π΄Π»ΠΈΠ½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ°.

ΠŸΡ€ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠΈ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ всСгда ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ этот Ρ‚ΠΈΠΏ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ. РаспространСнной ошибкой являСтся сохранСниС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ‚ΠΈΠΏΠ΅, Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ unsigned int. Π₯отя это Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Π½Π° 32-Π±ΠΈΡ‚Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…, 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π’ΠΈΠΏΡ‹ с явно Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ

Часто, ΠΊΠ°ΠΊ программисту, Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ с явным Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² вашСм ΠΊΠΎΠ΄Π΅.ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это соотвСтствуСт внСшним трСбованиям, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ, сСти ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ. НапримСр, звуковая ΠΊΠ°Ρ€Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ рСгистр, сСтСвой ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ 16-Π±ΠΈΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ исполняСмый Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ 8-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» cookie. Π’ этих случаях Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ подходящСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

Π―Π΄Ρ€ΠΎ опрСдСляСт эти Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… с явным Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² . Π’Π°Π±Π»ΠΈΡ†Π° 19.2 прСдставляСт собой ΠΏΠΎΠ»Π½Ρ‹ΠΉ список.

9000

000

9000

000 со знаком

Ρ†Π΅Π»ΠΎΠ΅
Π’Π°Π±Π»ΠΈΡ†Π° 19.2. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… с явно Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ

Π’ΠΈΠΏ

ОписаниС

s8

Π‘Π°ΠΉΡ‚ с подписью

s16

16-Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ со Π·Π½Π°ΠΊΠΎΠΌ

u16

16-Π±ΠΈΡ‚Π½ΠΎΠ΅ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅

s32

u32

32-разрядноС Ρ†Π΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ°

s64

64-разрядноС Ρ†Π΅Π»ΠΎΠ΅ со Π·Π½Π°ΠΊΠΎΠΌ

u64

U64

U6 подписанныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ.

Π­Ρ‚ΠΈ явныС Ρ‚ΠΈΠΏΡ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ просто опрСдСлСниями стандартных Ρ‚ΠΈΠΏΠΎΠ² C. На 64-Π±ΠΈΡ‚Π½ΠΎΠΉ машинС ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

typedef signed char s8;
typedef unsigned char u8;
typedef signed short s16;
typedef unsigned short u16;
typedef signed int s32;
typedef unsigned int u32;
typedef signed long s64;
typedef unsigned long u64;
 

Однако Π½Π° 32-Π±ΠΈΡ‚Π½ΠΎΠΉ машинС ΠΎΠ½ΠΈ, вСроятно, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

typedef signed char s8;
typedef unsigned char u8;
typedef signed short s16;
typedef unsigned short u16;
typedef signed int s32;
typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
 

Π­Ρ‚ΠΈ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ядра, Π² ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ отобраТаСтся Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ пространствС (скаТСм, Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ структуры Π² Ρ„Π°ΠΉΠ»Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°).Π­Ρ‚ΠΎ ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ пространства ΠΈΠΌΠ΅Π½. Π―Π΄Ρ€ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСт Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ этих Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просто ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° с двумя Π·Π½Π°ΠΊΠ°ΠΌΠΈ подчСркивания. НапримСр, 32-разрядный цСлочислСнный Ρ‚ΠΈΠΏ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ бСзопасно ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² пространство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, — __u32. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ u32; СдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ — это Π½Π°Π·Π²Π°Π½ΠΈΠ΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любоС имя Π²Π½ΡƒΡ‚Ρ€ΠΈ ядра, Π½ΠΎ Ссли Ρ‚ΠΈΠΏ являСтся Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ с прСфиксом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ загрязнСниС пространства ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства.

Подпись Chars

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ C Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… char ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ подписанным ΠΈΠ»ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌ.ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, процСссор ΠΈΠ»ΠΈ ΠΎΠ±Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ‚ΠΈΠΏΠ° char.

На Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ char подписан ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ 128 Π΄ΠΎ 127. На Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ARM, char ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ 0 Π΄ΠΎ 255.

НапримСр, Π² систСмах, Π³Π΄Π΅ char ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ, этот ΠΊΠΎΠ΄ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ сохраняСт 255 вмСсто 1 Π² i:

char i = -1;
 

На Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, Π³Π΄Π΅ char ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ подписан, этот ΠΊΠΎΠ΄ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ сохраняСт 1 Π² i.Если программист Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 1, ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ

.
Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ i = -1;
 

А Ссли программист Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 255, Ρ‚ΠΎ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ

Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ = 255;
 

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ char Π² своСм ΠΊΠΎΠ΄Π΅, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ, Ρ‚Π°ΠΊ ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» явно Ρ‚Π΅ΠΌ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ.

4.6 — Π¦Π΅Π»Ρ‹Π΅ числа фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ size_t

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΡƒΡ€ΠΎΠΊΠ°Ρ…, посвящСнных Ρ†Π΅Π»Ρ‹ΠΌ числам, ΠΌΡ‹ рассмотрСли, Ρ‡Ρ‚ΠΎ C ++ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ цСлочислСнныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, Π½ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ большС, Π² зависимости ΠΎΡ‚ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ систСмы.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ фиксирован?

Если ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Ρ‚ΠΎ это восходит ΠΊ C, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Π±Ρ‹Π»ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌΠΈ, Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. C Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ компилятора ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ для int, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Π Π°Π·Π²Π΅ это Π½Π΅ отстой?

По соврСмСнным ΠΌΠ΅Ρ€ΠΊΠ°ΠΌ Π΄Π°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρƒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π»Π΅ΠΏΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ с Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌΠΈ.ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ большС ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅, Π½ΠΎ Π½Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

Π¦Π΅Π»Ρ‹Π΅ числа фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΊΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ, C99 ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» Π½Π°Π±ΠΎΡ€ Ρ†Π΅Π»Ρ‹Ρ… чисСл фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹ (Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ stdint.h), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² любой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅.

Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Имя Π’ΠΈΠΏ Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π‘Π°Π½ΠΊΠ½ΠΎΡ‚Ρ‹
std :: int8_t 1 Π±Π°ΠΉΡ‚ со Π·Π½Π°ΠΊΠΎΠΌ -128 Π΄ΠΎ 127 Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… систСмах обрабатываСтся ΠΊΠ°ΠΊ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ.Π‘ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅.
std :: uint8_t 1 Π±Π°ΠΉΡ‚ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΎΡ‚ 0 Π΄ΠΎ 255 Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… систСмах обрабатываСтся ΠΊΠ°ΠΊ символ Π±Π΅Π· Π·Π½Π°ΠΊΠ°. Π‘ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅.
std :: int16_t 2 Π±Π°ΠΉΡ‚Π° со Π·Π½Π°ΠΊΠΎΠΌ -32 768 Π΄ΠΎ 32 767
std :: uint16_t 2 Π±Π°ΠΉΡ‚Π° Π±Π΅Π· Π·Π½Π°ΠΊΠ° 0 Π΄ΠΎ 65 535
std :: int32_t 4 Π±Π°ΠΉΡ‚Π° со Π·Π½Π°ΠΊΠΎΠΌ -2 147 483 648 Π΄ΠΎ 2 147 483 647
std :: uint32_t 4 Π±Π°ΠΉΡ‚Π° Π±Π΅Π· Π·Π½Π°ΠΊΠ° 0 Π΄ΠΎ 4 294 967 295
std :: int64_t 8 Π±Π°ΠΉΡ‚ со Π·Π½Π°ΠΊΠΎΠΌ -9,223,372,036,854,775,808 Π΄ΠΎ 9,223,372,036,854,775,807
std :: uint64_t 8 Π±Π°ΠΉΡ‚ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 0 Π΄ΠΎ 18 446 744 073 709 551 615

C ++ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ принял эти Ρ†Π΅Π»Ρ‹Π΅ числа фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ C ++ 11.Доступ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ cstdint , Π³Π΄Π΅ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ пространства ΠΈΠΌΠ΅Π½ std . Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

#include

#include

int main ()

{

std :: int16_t i {5};

std :: cout << i;

Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 0;

}

Π¦Π΅Π»Ρ‹Π΅ числа фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π²Π° нСдостатка: Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡ… ΡˆΠΈΡ€ΠΈΠ½Π΅ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ.ИспользованиС Ρ†Π΅Π»ΠΎΠ³ΠΎ числа фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚ ваш ΠΊΠΎΠ΄ ΠΌΠ΅Π½Π΅Π΅ пСрСносимым, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах.
Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ†Π΅Π»ΠΎΠ΅ число фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹, ΠΎΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Ρ‚ΠΈΠΏ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ†Π΅Π»ΠΎΠ΅ число для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚ -10 Π΄ΠΎ 20, Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ соблазн ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ std :: int8_t . Но ваш процСссор ΠΌΠΎΠ³ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа, поэтому Π²Ρ‹ просто потСряли ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, сдСлав ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ Π±Ρ‹Π»ΠΎ нСобходимости.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Ρ†Π΅Π»Ρ‹Ρ… чисСл фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π΅ Π½Π° всСх Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ….

БыстрыС ΠΈ наимСньшиС Ρ†Π΅Π»Ρ‹Π΅ числа

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ нСдостатки, C ++ Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСт Π΄Π²Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€Π° Ρ†Π΅Π»Ρ‹Ρ… чисСл.

Быстрый Ρ‚ΠΈΠΏ (std :: int_fast # _t) обСспСчиваСт самый быстрый цСлочислСнный Ρ‚ΠΈΠΏ со Π·Π½Π°ΠΊΠΎΠΌ с ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ # Π±ΠΈΡ‚ (Π³Π΄Π΅ # = 8, 16, 32 ΠΈΠ»ΠΈ 64). НапримСр, std :: int_fast32_t даст Π²Π°ΠΌ самый быстрый цСлочислСнный Ρ‚ΠΈΠΏ со Π·Π½Π°ΠΊΠΎΠΌ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 32 Π±ΠΈΡ‚Π°.

НаимСньший Ρ‚ΠΈΠΏ (std :: int_least # _t) прСдоставляСт наимСньший Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ цСлочислСнный Ρ‚ΠΈΠΏ с ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ # Π±ΠΈΡ‚ (Π³Π΄Π΅ # = 8, 16, 32 ΠΈΠ»ΠΈ 64).НапримСр, std :: int_least32_t даст Π²Π°ΠΌ наимСньший цСлочислСнный Ρ‚ΠΈΠΏ со Π·Π½Π°ΠΊΠΎΠΌ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 32 Π±ΠΈΡ‚Π°.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· авторской Visual Studio (32-разрядноС консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅):

#include

#include

int main ()

{

std :: cout << "fast 8:" << sizeof (std :: int_fast8_t) * 8 < <"Π±ΠΈΡ‚Ρ‹ \ ΠΏ";

std :: cout << "fast 16:" << sizeof (std :: int_fast16_t) * 8 << "Π±ΠΈΡ‚ \ n";

std :: cout << "fast 32:" << sizeof (std :: int_fast32_t) * 8 << "Π±ΠΈΡ‚ \ n";

std :: cout << "ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 8:" << sizeof (std :: int_least8_t) * 8 << "Π±ΠΈΡ‚ \ n";

std :: cout << "ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 16:" << sizeof (std :: int_least16_t) * 8 << "Π±ΠΈΡ‚ \ n";

std :: cout << "ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 32:" << sizeof (std :: int_least32_t) * 8 << "Π±ΠΈΡ‚ \ n";

Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 0;

}

Π­Ρ‚ΠΎ Π΄Π°Π»ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

 быстро 8: 8 Π±ΠΈΡ‚
быстро 16: 32 Π±ΠΈΡ‚Π°
быстро 32:32 Π±ΠΈΡ‚
ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 8: 8 Π±ΠΈΡ‚
ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 16:16 Π±ΠΈΡ‚
ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 32:32 Π±ΠΈΡ‚
 

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ std :: int_fast16_t Π±Ρ‹Π» 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ std :: int_least16_t Π±Ρ‹Π» 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌ.

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ быстрых ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (std :: uint_fast # _t ΠΈ std :: uint_least # _t).

Π­Ρ‚ΠΈ быстрыС ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΈ бСзопасны Π² использовании.

ΠžΡ‚Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»Ρ‹ΠΌ числам std :: int_fast # _t ΠΈ std :: int_least # _t, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†Π΅Π»ΠΎΠ΅ число Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ минимального Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: std :: int8_t ΠΈ std :: uint8_t ΠΌΠΎΠ³ΡƒΡ‚ вСсти сСбя ΠΊΠ°ΠΊ символы вмСсто Ρ†Π΅Π»Ρ‹Ρ…

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ символах Π² ΡƒΡ€ΠΎΠΊΠ΅ (4.11 — Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹).

Из-Π·Π° упущСния Π² спСцификации C ++ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ компиляторов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ std :: int8_t ΠΈ std :: uint8_t (ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ быстрыС Ρ‚ΠΈΠΏΡ‹ с наимСньшСй фиксированной ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ) ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ signed char ΠΈ unsigned char соотвСтствСнно. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, std :: cin ΠΈ std :: cout ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ это:

#include

#include

int main ()

{

std :: int8_t myint {65};

std :: cout << myint;

Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 0;

}

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ систСм эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Β«AΒ» (обрабатывая myint ΠΊΠ°ΠΊ символ).Однако Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмах это ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ 65 , ΠΊΠ°ΠΊ ΠΈ оТидалось.

Для простоты Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ std :: int8_t ΠΈ std :: uint8_t (ΠΈ связанных быстрых ΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ²) Π² Ρ†Π΅Π»ΠΎΠΌ (вмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ std :: int16_t ΠΈΠ»ΠΈ std :: uint16_t ). Однако, Ссли Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ std :: int8_t ΠΈΠ»ΠΈ std :: uint8_t , Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ остороТны со всСм, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ std :: int8_t ΠΈΠ»ΠΈ std :: uint8_t ΠΊΠ°ΠΊ char вмСсто Ρ†Π΅Π»ΠΎΠ³ΠΎ числа ( это Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ std :: cout ΠΈ std :: cin ).

НадСюсь, это Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ C ++.

Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹. Если Π²Ρ‹ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ часто Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ символы.

ЦСлочислСнный ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΉ ΠΎΠΏΡ‹Ρ‚

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π² C ++ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ†Π΅Π»Ρ‹Π΅ числа фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ для Ρ†Π΅Π»Ρ‹Ρ… чисСл Π² C ++ являСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

  • int ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, Ссли Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, число всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ 2-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа со Π·Π½Π°ΠΊΠΎΠΌ).НапримСр, Ссли Π²Ρ‹ проситС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ввСсти свой возраст ΠΈΠ»ΠΈ считаСтС ΠΎΡ‚ 1 Π΄ΠΎ 10, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, являСтся Π»ΠΈ int 16 ΠΈΠ»ΠΈ 32 Π±ΠΈΡ‚ (числа подходят Π² любом случаС). Π­Ρ‚ΠΎ ΠΏΠΎΠΊΡ€ΠΎΠ΅Ρ‚ ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ случаСв, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹, вСроятно, ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ.
  • Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° пСрСмСнная Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ std :: int_fast # _t.
  • Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° пСрСмСнная, Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ экономии памяти Π½Π°Π΄ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ std :: int_least # _t.Π­Ρ‚ΠΎ Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ распрСдСлСнии большого количСства ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

По возмоТности ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ:

  • Π‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Ссли Ρƒ вас Π½Π΅Ρ‚ вСской ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹.
  • 8-Π±ΠΈΡ‚Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹.
  • Π›ΡŽΠ±Ρ‹Π΅ спСцифичныС для компилятора Ρ†Π΅Π»Ρ‹Π΅ числа фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹ — Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Visual Studio опрСдСляСт __int8, __int16 ΠΈ Ρ‚. Π”.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ std :: size_t?

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

#include

int main ()

{

std :: cout << sizeof (int) << '\ n';

Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 0;

}

На машинС Π°Π²Ρ‚ΠΎΡ€Π° это ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ΠΎ:

 4
 

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ просто, ΠΏΡ€Π°Π²Π΄Π°? ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ sizeof Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΊΠ°ΠΊΠΎΠΉ цСлочислСнный Ρ‚ΠΈΠΏ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅? Int? ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅? ΠžΡ‚Π²Π΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ sizeof (ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Ρ‹) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° std :: size_t .std :: size_t опрСдСляСтся ΠΊΠ°ΠΊ цСлочислСнный Ρ‚ΠΈΠΏ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдставлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π—Π°Π±Π°Π²Π½ΠΎ, Π½ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ sizeof (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° std :: size_t ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ std :: size_t нСпосрСдствСнно :

#include // std :: size_t

#include

int main ()

{

std :: cout << sizeof (std :: size_t) << '\ ΠΏ ';

Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 0;

}

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊ 32-Π±ΠΈΡ‚Π½ΠΎΠ΅ (4 Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ΅) консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² систСмС Π°Π²Ρ‚ΠΎΡ€Π°, выводится:

 4
 

Подобно Ρ†Π΅Π»ΠΎΠΌΡƒ числу, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ зависит ΠΎΡ‚ систСмы, std :: size_t Ρ‚Π°ΠΊΠΆΠ΅ различаСтся ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ. std :: size_t Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 16 Π±ΠΈΡ‚, Π½ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ систСм Π±ΡƒΠ΄Π΅Ρ‚ эквивалСнтно ΡˆΠΈΡ€ΠΈΠ½Π΅ адрСса прилоТСния. Π’ΠΎ Π΅ΡΡ‚ΡŒ для 32-разрядных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ std :: size_t ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ 32-разрядным Ρ†Π΅Π»Ρ‹ΠΌ числом Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Π° для 64-разрядного прилоТСния size_t ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ 64-разрядным Ρ†Π΅Π»Ρ‹ΠΌ числом Π±Π΅Π· Π·Π½Π°ΠΊΠ°. size_t опрСдСляСтся ΠΊΠ°ΠΊ достаточно большой, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ самого большого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, созданного Π² вашСй систСмС (Π² Π±Π°ΠΉΡ‚Π°Ρ…). НапримСр, Ссли std :: size_t ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ 4 Π±Π°ΠΉΡ‚Π°, самый большой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, создаваСмый Π² вашСй систСмС, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС 4 294 967 295 Π±Π°ΠΉΡ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это наибольшСС число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 4-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ°.Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π΅Π» Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π΅Π» Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΠΆΠ΅ Π² зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ компилятора.

По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ, любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ size_t, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ , считаСтся ΠΏΠ»ΠΎΡ…ΠΎ сформированным (ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ sizeof Π½Π΅ смоТСт Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π΅Π· пСрСноса.


Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² C — с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… C с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ — здСсь ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² C, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π²ΠΎΠ΄ для этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…?

Π’ C Ρƒ нас Π΅ΡΡ‚ΡŒ 4 Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΈΠ· этих 4 Ρ‚ΠΈΠΏΠΎΠ². Из 4-Ρ… Ρƒ нас Π΅ΡΡ‚ΡŒ 2 Ρ‚ΠΈΠΏΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами (числа с дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ). Π§Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ‚ΠΈΠΏΠ°:

  1. Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ
  2. символ
  3. ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ
  4. Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ люди говорят, Ρ‡Ρ‚ΠΎ Β« void Β» Ρ‚Π°ΠΊΠΆΠ΅ являСтся Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ void Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈ использовании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ это Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Когда ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ возраст Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΌΡ‹ создаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ цСлочислСнный Ρ‚ΠΈΠΏ.

НапримСр:

Когда ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ мСста, ΠΌΡ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‚ΠΈΠΏ.

НапримСр:

ΠžΠ±Ρ‰ΠΈΠΉ способ создания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° —

.

Eg1: <Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…> пСрСмСнная;

Eg2: <Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…> пСрСмСнная1, пСрСмСнная2,….пСрСмСнная N;

Π’ C цСлочислСнная пСрСмСнная Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 4 Π±Π°ΠΉΡ‚Π° (2 Π±Π°ΠΉΡ‚Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… компиляторах. НапримСр: Turbo-C) памяти, Π° пСрСмСнная Ρ‚ΠΈΠΏΠ° double Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 8 Π±Π°ΠΉΡ‚ΠΎΠ² памяти.

Когда ΠΌΡ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, систСма ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ трСбования ΠΊ памяти для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ цСлочислСнного / символьного Ρ‚ΠΈΠΏΠ° , Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹) ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ° float / double.

Π Π°Π·ΠΌΠ΅Ρ€ ΠΈ ассортимСнт:

Π’ компиляторах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ 4 Π±Π°ΠΉΡ‚Π° для Ρ†Π΅Π»ΠΎΠ³ΠΎ числа, всСго выдСляСтся 32 Π±ΠΈΡ‚Π° (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π°ΠΉΡ‚ формируСтся ΠΈΠ· 8 Π±ΠΈΡ‚ΠΎΠ²) ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 1 Π±ΠΈΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдставлСния Π·Π½Π°ΠΊΠ°.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, фактичСскоС число формируСтся ΠΈΠ· ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ 31 Π±ΠΈΡ‚Π°.

Когда Π±ΠΈΡ‚ Π·Π½Π°ΠΊΠ° Ρ€Π°Π²Π΅Π½ 0, число считаСтся ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π° ΠΊΠΎΠ³Π΄Π° Π±ΠΈΡ‚ Π·Π½Π°ΠΊΠ° Ρ€Π°Π²Π΅Π½ 1, число считаСтся ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π’ компиляторах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ 2 Π±Π°ΠΉΡ‚Π° для Ρ†Π΅Π»ΠΎΠ³ΠΎ числа, всСго выдСляСтся 16 Π±ΠΈΡ‚, ΠΈ Π² этом случаС Ρ‚Π°ΠΊΠΆΠ΅ 1 Π±ΠΈΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдставлСния Π·Π½Π°ΠΊΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, фактичСскоС число формируСтся ΠΈΠ· ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ 15 Π±ΠΈΡ‚.

Они извСстны ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Β«signed intΒ» , ΠΈ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ создаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Β«intΒ».Если ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π±ΠΈΡ‚, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС 32 (ΠΈΠ»ΠΈ 16) Π±ΠΈΡ‚ для прСдставлСния числа.

Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ собираСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, возраста Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°). Π’Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ извСстны ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Β«unsigned intΒ» .

Π½Π° 4-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΌ компиляторС

Π½Π° 4-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΌ компиляторС
ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π’ΠΈΠΏ Π Π°Π·ΠΌΠ΅Ρ€

(Π±Π°ΠΉΡ‚Ρ‹)

макс. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
подписано Char 1 127 (2 7 -1) -128 (-2 7 )
Π‘Π΅Π· Π·Π½Π°ΠΊΠ° Π·Π½Π°ΠΊ 1 255 (2 8 -1) 0
подписано Π²Π½ΡƒΡ‚Ρ€ 4 2147483647 (2 31 -1) -2147483648 (-2 31 )
Π‘Π΅Π· Π·Π½Π°ΠΊΠ° Π²Π½ΡƒΡ‚Ρ€ 4 4294967295 (2 32 -1) 0
подписано Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 8 72036854775807 (2 63 -1) —72036854775808 (-2 63 )
Π‘Π΅Π· Π·Π½Π°ΠΊΠ° Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 8 18446744073709551615 (2 64 -1) 0
с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой 4 3.4 * 10 38 1,4 * 10 -45
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ 8 1,7 * 10 308 4,9 * 10 -324

Π½Π° 2-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΌ компиляторС

Π½Π° 2-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΌ компиляторС
ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏ Π Π°Π·ΠΌΠ΅Ρ€

(Π±Π°ΠΉΡ‚Ρ‹)

макс. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
подписано знак 1 127 (2 7 -1) -128 (-2 7 )
Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π·Π½Π°ΠΊ 1 255 (2 8 -1) 0
подписано Π²Π½ΡƒΡ‚Ρ€ 2 32767 (2 15 -1)-32768 (-2 15 )
Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π²Π½ΡƒΡ‚Ρ€ 2 65535 (2 16 -1) 0
подписано Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 4 2147483647 (2 31 -1) -2147483648 (-2 31 )
Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 4 4294967295 (2 32 -1) 0
с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой 4 3.4 * 10 38 1,4 * 10 -45
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ 8 1,7 * 10 308 4,9 * 10 -324

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

  • Β«ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉΒ» ΠΈΠ»ΠΈ Β«Π‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉΒ» Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой.
  • Β«ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉΒ» ΠΈΠ»ΠΈ Β«Π‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉΒ» Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ.
  • ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ для Β«floatΒ» ΠΈ Β«doubleΒ», ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой минимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ (наимСньшСС) ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

с Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ ΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для компиляции c-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½ ΠΌΠ½ΠΎΠ³ΠΎ. Но с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ компиляторы Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΈ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠ΄Π° .

  • Одна ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ, выдСлСнная для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, различаСтся ΠΎΡ‚ компилятора ΠΊ компилятору.
  • Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ машинС, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌ.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½ΠΈΠΆΠ΅. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠΎΠ² для 3 Ρ€Π°Π·Π½Ρ‹Ρ… компиляторов. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ компиляторы с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ².

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Β«ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ intΒ» ΠΈ Β«intΒ» ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€.

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Type1-компилятор Type2-компилятор Type3-компилятор
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ 2 2 4
Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ 2 4 4
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ 4 4 8

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ возраст Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° (возраст ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ максимум 200), Ρ‚ΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ int (short int).

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ сохраняСм расстояниС ΠΎΡ‚ ΠšΠ°Π»ΠΈΡ„ΠΎΡ€Π½ΠΈΠΈ Π΄ΠΎ ΠœΠΎΡΠΊΠ²Ρ‹ Π² милях (5898 миль) , Ρ‚ΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° int.

  • Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ» Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«MΒ» ΠΈΠ»ΠΈ Β«FΒ» для ΠΌΡƒΠΆΡ‡ΠΈΠ½ ΠΈ ΠΆΠ΅Π½Ρ‰ΠΈΠ½ соотвСтствСнно), ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° char.
  • ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с расстояниСм ΠΎΡ‚ Π—Π΅ΠΌΠ»ΠΈ Π΄ΠΎ Π›ΡƒΠ½Ρ‹, Ρ‚ΠΎΠ³Π΄Π° Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° long ΠΈΠ»ΠΈ большСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

Π’Π½ΡƒΡ‚Ρ€. —

Π­Ρ‚ΠΎ Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎ 10-Π·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ числа (Π² 4-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… систСмах) с Ρ‚ΠΈΠΏΠΎΠΌ int.

НапримСр:

Π”Π»ΠΈΠ½Π½Ρ‹ΠΉ Π˜Π½Ρ‚ —

Когда ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС, Ρ‡Π΅ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ int, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ long. Π‘ long ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΎ 19-Π·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ числа.

Когда ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС, Ρ‡Π΅ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ int, Π»ΡƒΡ‡ΡˆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ суффикс Β«lΒ» ΠΈΠ»ΠΈ Β«LΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° long (long int).

  • НапримСр: Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ a = 131009;
  • Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ b = 12345678
45;
  • Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ c = 12345678
  • 45L;
  • Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» d = 121009;
  • long int e = 12345678
  • 45;

    Char —

    Π’ C Ρ‚ΠΈΠΏ char Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 1 Π±Π°ΠΉΡ‚ памяти ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ символы ASCII.

    256 символов ASCII (ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ 0 Π΄ΠΎ 255) ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны этим Ρ‚ΠΈΠΏΠΎΠΌ. Π’ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ ASCII A — 65, B — 66, C — 67, D — 68, Z — 90, a — 97, b — 98, z — 122, Β«0Β» — 48, Β«1Β» — 49, Β«9Β» — 57, «» — 32, Β«\ nΒ» — 10, Β«\ tΒ» — 9.

    НапримСр:

    • char a = 55;
    • char b = ’A’; (считаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ) char b = 65;
    • char c = ’9’; (отличаСтся ΠΎΡ‚) char c = 9;
    • char d = ’+’;

    Поплавок —

    Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с числами с дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° float.

    ΠžΠ±Ρ‹Ρ‡Π½ΠΎ double ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, Ρ‡Π΅ΠΌ float, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ double Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ float . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅ΡΡ‚ΡŒ float Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для простых вычислСний.

    НапримСр:

    • с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ a = 3,6;
    • ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ b = 3.6f;
    • float c = 4.5e12; ß понимаСтся ΠΊΠ°ΠΊ (float c = 4.5 * 10 12 )
    • ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ d = 123.44e-45; ß понимаСтся ΠΊΠ°ΠΊ (float d = 123,44 * 10 -45 )

    Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ —

    Π­Ρ‚ΠΎ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для хранСния Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл.

    По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ считаСтся Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ. МСньшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ большСго Ρ‚ΠΈΠΏΠ°. Π˜Ρ‚Π°ΠΊ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ утвСрТдСния Π²Π΅Ρ€Π½Ρ‹.

    НапримСр:

    • Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π° = 44,66;
    • Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ b = ’A’;
    • Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ c = 6545;

    ЛогичСскиС значСния —

    C Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ эксклюзивного Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… для прСдставлСния логичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ «истина» ΠΈ «лоТь».

    Π”Π°ΠΆΠ΅ для хранСния Ρ‚Π°ΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ C ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏ int.ΠžΠ±Ρ‹Ρ‡Π½ΠΎ 1 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдставлСния истины, Π° 0 — для прСдставлСния Π»ΠΎΠΆΠΈ. ЀактичСски, логичСски любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ 0, рассматриваСтся Π² C.

    ΠΊΠ°ΠΊ истинноС.

    НапримСр:

    • int a = 10 <20;
    • int b = 1;
    • int c = 0;
    • ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» d = 10 == 20;

    ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ Int & Double —

    ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° опСрация выполняСтся Π½Π°Π΄ ΠΏΠΎΠΏΠ»Π°Π²ΠΊΠ°ΠΌΠΈ, ΠΎΠ½ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ начнСтся фактичСская опСрация.

    ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

    Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

    Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *

    © 2019 Π¨Ρ‚ΠΈΡ€Π»ΠΈΡ† Π‘Π΅Ρ‚ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… салонов Π² ΠŸΠ΅Ρ€ΠΌΠΈ

    Цифровая ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ, Ρ†Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΈ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², сканированиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ризография Π² ΠŸΠ΅Ρ€ΠΌΠΈ.