Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ int c: 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
__int81charΠžΡ‚ -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 long8Π½Π΅Ρ‚ (Π½ΠΎ эквивалСнтно 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++.

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

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



ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² C++: short, int ΠΈ long | Π£Ρ€ΠΎΠΊΠΈ Π‘++

  Обновл. 22 Апр 2021Β Β |Β 

На этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрим цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² языкС Π‘++, ΠΈΡ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ дСлСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹).

ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

ЦСлочислСнный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… β€” это Ρ‚ΠΈΠΏ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹Π΅ числа (Π±Π΅Π· Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: -2, -1, 0, 1, 2). Π’ языкС C++ Π΅ΡΡ‚ΡŒ 5 основных цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ², доступных для использования:

ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡΠ’ΠΈΠΏΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€
Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…char1 Π±Π°ΠΉΡ‚
ЦСлочислСнный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…short2 Π±Π°ΠΉΡ‚Π°
int2 Π±Π°ΠΉΡ‚Π° (Π½ΠΎ Ρ‡Π°Ρ‰Π΅ всСго 4 Π±Π°ΠΉΡ‚Π°)
long4 Π±Π°ΠΉΡ‚Π°
long long8 Π±Π°ΠΉΡ‚

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’ΠΈΠΏ char β€” это особый случай: ΠΎΠ½ являСтся ΠΊΠ°ΠΊ цСлочислСнным, Ρ‚Π°ΠΊ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Об этом Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡƒΡ€ΠΎΠΊΠΎΠ².

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ цСлочислСнными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, пСрСчислСнными Π²Ρ‹ΡˆΠ΅, являСтся ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‡Π΅ΠΌ ΠΎΠ½ большС, Ρ‚Π΅ΠΌ большС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ смоТСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ пСрСмСнная этого Ρ‚ΠΈΠΏΠ°.

ОбъявлСниС цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

ОбъявлСниС происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

char c;
short int si; // допустимо
short s; // ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅
int i;
long int li; // допустимо
long l; // ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅
long long int lli; // допустимо
long long ll; // ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅

char c;

short int si; // допустимо

short s;Β Β Β Β Β Β // ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅

int i;

long int li; // допустимо

long l;Β Β Β Β Β Β // ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅

long long int lli; // допустимо

long long ll;Β Β Β Β Β Β // ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½Ρ‹Π΅ названия short int,Β long int ΠΈ long long int ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΈΡ… сокращСнныС вСрсии (Π±Π΅Π· int) Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ для использования. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ постоянноС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ int затрудняСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° (Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ).

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

Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΡƒΡ€ΠΎΠΊΠ°, пСрСмСнная с n-Π½Ρ‹ΠΌ количСством Π±ΠΈΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 2nΒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Но Ρ‡Ρ‚ΠΎ это Π·Π° значСния? Π­Ρ‚ΠΎ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ β€” это значСния ΠΎΡ‚ ΠΈ Π΄ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ цСлочислСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ опрСдСляСтся двумя Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ: Π΅Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ (измСряСтся Π² Π±ΠΈΡ‚Π°Ρ…) ΠΈ Π΅Ρ‘ Π·Π½Π°ΠΊΠΎΠΌ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ signed ΠΈΠ»ΠΈ unsigned).

ЦСлочислСнный Ρ‚ΠΈΠΏ signed (со Π·Π½Π°ΠΊΠΎΠΌ) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ signed, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово signed:

signed char c;
signed short s;
signed int i;
signed long l;
signed long long ll;

signed char c;

signed short s;

signed int i;

signed long l;

signed long long ll;

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово signed ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

1-байтовая цСлочислСнная пСрСмСнная со Π·Π½Π°ΠΊΠΎΠΌ (signed) ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚ -128 Π΄ΠΎ 127, Ρ‚.Π΅. любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ -128 Π΄ΠΎ 127 (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ) ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Π½Π΅ΠΉ бСзопасно.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ часто встрСчаСтся ΠΏΡ€ΠΈ использовании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для хранСния количСства ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ваш рост ΠΈΠ»ΠΈ вСс Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ).

ЦСлочислСнный Ρ‚ΠΈΠΏ unsigned (Π±Π΅Π· Π·Π½Π°ΠΊΠ°) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ unsigned, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово unsigned:

unsigned char c;
unsigned short s;
unsigned int i;
unsigned long l;
unsigned long long ll;

unsigned char c;

unsigned short s;

unsigned int i;

unsigned long l;

unsigned long long ll;

1-байтовая цСлочислСнная пСрСмСнная Π±Π΅Π· Π·Π½Π°ΠΊΠ° (unsigned) ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚ 0 Π΄ΠΎ 255.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ unsigned ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ смоТСт ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ поняли Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ signed ΠΈ unsigned, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…:

Π Π°Π·ΠΌΠ΅Ρ€/Π’ΠΈΠΏΠ”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
1 Π±Π°ΠΉΡ‚ signedΠΎΡ‚ -128 Π΄ΠΎ 127
1 Π±Π°ΠΉΡ‚ unsignedΠΎΡ‚ 0 Π΄ΠΎ 255
2 Π±Π°ΠΉΡ‚Π° signedΠΎΡ‚ -32 768 Π΄ΠΎ 32 767
2 Π±Π°ΠΉΡ‚Π° unsignedΠΎΡ‚ 0 Π΄ΠΎ 65 535
4 Π±Π°ΠΉΡ‚Π° signedΠΎΡ‚ -2 147 483 648 Π΄ΠΎ 2 147 483 647
4 Π±Π°ΠΉΡ‚Π° unsignedΠΎΡ‚ 0 Π΄ΠΎ 4 294 967 295
8 Π±Π°ΠΉΡ‚ΠΎΠ² signedΠΎΡ‚ -9 223 372 036 854 775 808 Π΄ΠΎ 9 223 372 036 854 775 807
8 Π±Π°ΠΉΡ‚ΠΎΠ² unsignedΠΎΡ‚ 0 Π΄ΠΎ 18 446 744 073 709 551 615

Для ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠ²: ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ signed с n-Π½Ρ‹ΠΌ количСством Π±ΠΈΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ -(2n-1) Π΄ΠΎ 2n-1-1. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ unsigned с n-Π½Ρ‹ΠΌ количСством Π±ΠΈΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ 0 Π΄ΠΎ (2n)-1.

Для Π½Π΅ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠ²: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ πŸ™‚

ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡƒΡ‚Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ signed ΠΈ unsigned ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Но Π΅ΡΡ‚ΡŒ простой способ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΈΡ… различия. Π§Π΅ΠΌ отличаСтся ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число ΠΎΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ? ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ! ΠœΠΈΠ½ΡƒΡΠΎΠΌ спСрСди. Если минуса Π½Π΅Ρ‚, Π·Π½Π°Ρ‡ΠΈΡ‚ число β€” ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, цСлочислСнный Ρ‚ΠΈΠΏ со Π·Π½Π°ΠΊΠΎΠΌ (signed) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ минус ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚.Π΅. числа ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. ЦСлочислСнный Ρ‚ΠΈΠΏ Π±Π΅Π· Π·Π½Π°ΠΊΠ° (unsigned) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ минус спСрСди отсутствуСт, Ρ‚.Π΅. числа ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

Π§Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: signed ΠΈΠ»ΠΈ unsigned?

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ объявим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π±Π΅Π· указания signed ΠΈΠ»ΠΈ unsigned?

ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡΠ’ΠΈΠΏΠŸΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…charsigned ΠΈΠ»ΠΈ unsigned (Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв signed)
ЦСлочислСнный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…shortsigned
intsigned
longsigned
long longsigned

ВсС цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΡ€ΠΎΠΌΠ΅ char, ΡΠ²Π»ΡΡŽΡ‚ΡΡ signed ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’ΠΈΠΏ char ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ signed, Ρ‚Π°ΠΊ ΠΈ unsigned (Π½ΠΎ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, signed).

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово signed Π½Π΅ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ (ΠΎΠ½ΠΎ ΠΈ Ρ‚Π°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΠ·Π±Π΅Π³Π°ΡŽΡ‚ использования цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² unsigned, Ссли Π² этом Π½Π΅Ρ‚ особой надобности, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈΒ unsigned ошибок, ΠΏΠΎ статистикС, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ большС, Π½Π΅ΠΆΠ΅Π»ΠΈ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ signed.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ signed, вмСсто unsigned.

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅

Вопрос: Β«Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ попытаСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ находится Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…?Β». ΠžΡ‚Π²Π΅Ρ‚: Β«ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅Β».

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (Π°Π½Π³Π». Β«overflowΒ») случаСтся ΠΏΡ€ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π±ΠΈΡ‚ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ достаточно памяти для ΠΈΡ… хранСния.

На ΡƒΡ€ΠΎΠΊΠ΅ β„–28 ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ (Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ) Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… значСния (0 ΠΈΠ»ΠΈ 1). Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ чисСл ΠΎΡ‚ 0 Π΄ΠΎ 15 Π² дСсятичной ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмах:

ДСсятичная систСмаДвоичная систСма
00
11
210
311
4100
5101
6110
7111
81000
91001
101010
111011
121100
131101
141110
151111

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Π΅ΠΌ большС число, Ρ‚Π΅ΠΌ большС Π΅ΠΌΡƒ трСбуСтся Π±ΠΈΡ‚. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ наши ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‚ΠΎ Π½Π° Π½ΠΈΡ… Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ ограничСния Π½Π° количСство Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ пСрСполнСния

Рассмотрим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ unsigned, которая состоит ΠΈΠ· 4-Ρ… Π±ΠΈΡ‚. Π›ΡŽΠ±ΠΎΠ΅ ΠΈΠ· Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… чисСл, пСрСчислСнных Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π²Ρ‹ΡˆΠ΅, помСстится Π²Π½ΡƒΡ‚Ρ€ΠΈ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

«Но Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ попытаСмся ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ большС 4-Ρ… Π±ΠΈΡ‚?Β». ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ! ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Наша пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 4 Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… (Ρ‚Π΅, Ρ‡Ρ‚ΠΎ справа) Π±ΠΈΡ‚Π°, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ β€” ΠΏΠΎΡ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ.

НапримСр, Ссли ΠΌΡ‹ попытаСмся ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ число 21 Π² Π½Π°ΡˆΡƒ 4-Π±ΠΈΡ‚Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ:

ДСсятичная систСмаДвоичная систСма
2110101

Число 21 Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 5 Π±ΠΈΡ‚ (10101). 4 Π±ΠΈΡ‚Π° справа (0101) помСстятся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π° ΠΊΡ€Π°ΠΉΠ½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ Π±ΠΈΡ‚ (1) просто потСряСтся. Π’.Π΅. наша пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ 0101, Ρ‡Ρ‚ΠΎ Ρ€Π°Π²Π½ΠΎ 101 (Π½ΡƒΠ»ΡŒ спСрСди Π½Π΅ считаСтся), Π° это ΡƒΠΆΠ΅ число 5, Π° Π½Π΅ 21.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: О ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ чисСл ΠΈΠ· Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмы Π² Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ, Π³Π΄Π΅ ΠΌΡ‹ всё Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ рассмотрим ΠΈ обсудим.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΊΠΎΠ΄Π΅ (Ρ‚ΠΈΠΏ short Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 16 Π±ΠΈΡ‚):

#include <iostream>

int main()
{
unsigned short x = 65535; // наибольшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 16-битная unsigned пСрСмСнная
std::cout << «x was: » << x << std::endl;
x = x + 1; // 65536 — это число большС максимально допустимого числа ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° допустимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ пСрСмСннная x Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 17 Π±ΠΈΡ‚
std::cout << «x is now: » << x << std::endl;
return 0;
}

#include <iostream>

int main()

{

Β Β Β Β unsigned short x = 65535; // наибольшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 16-битная unsigned пСрСмСнная

Β Β Β Β std::cout << «x was: » << x << std::endl;

Β Β Β Β x = x + 1; // 65536 — это число большС максимально допустимого числа ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° допустимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ пСрСмСннная x Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 17 Π±ΠΈΡ‚

Β Β Β Β std::cout << «x is now: » << x << std::endl;

Β Β Β Β return 0;

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

x was: 65535
x is now: 0

Π§Ρ‚ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ? ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ xΒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС, Ρ‡Π΅ΠΌ ΠΎΠ½Π° способна Π² сСбС Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ.

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ большС: Число 65 535 Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния прСдставлСно ΠΊΠ°ΠΊ 1111 1111 1111 1111. 65 535 β€” это наибольшСС число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 2-байтовая (16 Π±ΠΈΡ‚) цСлочислСнная пСрСмСнная Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это число ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ всС 16 Π±ΠΈΡ‚. Когда ΠΌΡ‹ добавляСм 1, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ число 65 536. Число 65 536 прСдставлСно Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС ΠΊΠ°ΠΊ 1 0000 0000 0000 0000, ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 17 Π±ΠΈΡ‚! Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, самый Π³Π»Π°Π²Π½Ρ‹ΠΉ Π±ΠΈΡ‚ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ являСтся 1) тСряСтся, Π° всС 16 Π±ΠΈΡ‚ справа β€” ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ. ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ 0000 0000 0000 0000 соотвСтствуСт дСсятичному 0, Ρ‡Ρ‚ΠΎ ΠΈ являСтся нашим Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ.

Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, использовав число мСньшС минимального ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° допустимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

#include <iostream>

int main()
{
unsigned short x = 0; // наимСньшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ 2-байтовая unsigned пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ
std::cout << «x was: » << x << std::endl;
x = x — 1; // ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅!
std::cout << «x is now: » << x << std::endl;
return 0;
}

#include <iostream>

int main()

{

Β Β Β Β unsigned short x = 0; // наимСньшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ 2-байтовая unsigned пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ

Β Β Β Β std::cout << «x was: » << x << std::endl;

Β Β Β Β x = x — 1; // ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅!

Β Β Β Β std::cout << «x is now: » << x << std::endl;

Β Β Β Β return 0;

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

x was: 0
x is now: 65535

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π° это Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ привСтствуСтся. Если Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ малСйшСС ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ находится Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° допустимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… побольшС!

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ: Никогда Π½Π΅ допускайтС возникновСния пСрСполнСния Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…!

Π”Π΅Π»Π΅Π½ΠΈΠ΅ цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π’ языкС C++ ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΄Π²ΡƒΡ… Ρ†Π΅Π»Ρ‹Ρ… чисСл, Π³Π΄Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число, всё довольно прСдсказуСмо:

#include <iostream>

int main()
{
std::cout << 20 / 4 << std::endl;
return 0;
}

#include <iostream>

int main()

{

Β Β Β Β std::cout << 20 / 4 << std::endl;

Β Β Β Β return 0;

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

5

Но Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ дСлСния Π΄Π²ΡƒΡ… Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ число? НапримСр:

#include <iostream>

int main()
{
std::cout << 8 / 5 << std::endl;
return 0;
}

#include <iostream>

int main()

{

Β Β Β Β std::cout << 8 / 5 << std::endl;

Β Β Β Β return 0;

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

1

Π’ языкС C++ ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ†Π΅Π»Ρ‹Ρ… чисСл Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число. А Ρ‚Π°ΠΊΠΈΠ΅ числа Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Ρ€ΠΎΠ±ΡŒ (ΠΎΠ½Π° просто отбрасываСтся, Π½Π΅ округляСтся!).

Рассмотрим Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: 8 / 5 = 1.6. Но ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ†Π΅Π»Ρ‹Ρ… чисСл Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, дробная Ρ‡Π°ΡΡ‚ΡŒ (0.6) значСния отбрасываСтся ΠΈ остаСтся 1.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ: Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ†Π΅Π»Ρ‹Ρ… чисСл, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ любая дробная Ρ‡Π°ΡΡ‚ΡŒ всСгда отбрасываСтся.

ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ:

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°…

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях:

C: ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ — Linux FAQ

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ указатСлями Π½Π° области памяти, хранящиС ΠΈΡ… значСния. Π’ языкС C каТдая пСрСмСнная Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ структуру Π΄Π°Π½Π½Ρ‹Ρ…, хранящихся Π² памяти. Π­Ρ‚Π° информация позволяСт ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, сколько памяти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для хранСния значСния Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ.

Π―Π·Ρ‹ΠΊ C ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ char, int, float ΠΈ double. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Π΅ с использованиСм слов signed, unsigned ΠΈ long, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² памяти значСния ΠΈΠ· Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ².

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

ЦСлочислСнная пСрСмСнная Ρ‚ΠΈΠΏΠ° int позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ числа Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π±Π°ΠΉΡ‚Π°Ρ… памяти. ΠŸΡ€ΠΈ присваивании цСлочислСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ значСния с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Ρ‚ΠΈΠΏΠ° float ΠΈΠ»ΠΈ double, это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΎ Π² цСлочислСнноС.

int count = 8;

Π’Π°ΠΊΠΆΠ΅ Π² распоряТСнии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ (unsigned int), ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ (short int),Β  Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ (long int) ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ (long long int) цСлочислСнныС значСния. Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ нСобходимости:

  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‚ΠΈΠΏΠ° short int ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ -32768 Π΄ΠΎ 32768 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° памяти.
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‚ΠΈΠΏΠ° unsigned short int ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ 0 Π΄ΠΎ 65535 Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° памяти.
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‚ΠΈΠΏΠ° int ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ -2147483648 Π΄ΠΎΒ  2147483648 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±Π°ΠΉΡ‚Π° памяти.
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‚ΠΈΠΏΠ° unsigned int ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ 0 Π΄ΠΎ 4294967295 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±Π°ΠΉΡ‚Π° памяти.
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‚ΠΈΠΏΠ° long int ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ -2147483648 Π΄ΠΎΒ  2147483648 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±Π°ΠΉΡ‚Π° памяти Π½Π° 32-Π±ΠΈΡ‚Π½Ρ‹Ρ… систСмах ΠΈ значСния ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ -9223372036854775807 Π΄ΠΎ 9223372036854775807 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ восСмь Π±Π°ΠΉΡ‚ памяти Π½Π° 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… систСмах.
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‚ΠΈΠΏΠ° unsigned long int ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ 0 Π΄ΠΎ 4294967295 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±Π°ΠΉΡ‚Π° памяти Π½Π° 32-Π±ΠΈΡ‚Π½Ρ‹Ρ… систСмах ΠΈ значСния ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ 0 Π΄ΠΎ 18446744073709551615 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ восСмь Π±Π°ΠΉΡ‚ памяти Π½Π° 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… систСмах.
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‚ΠΈΠΏΠ° long long int ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ -9223372036854775807 Π΄ΠΎ 9223372036854775807 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ восСмь Π±Π°ΠΉΡ‚ памяти Π½Π° Π»ΡŽΠ±Ρ‹Ρ… систСмах.
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‚ΠΈΠΏΠ° unsigned long long int ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ 0 Π΄ΠΎ 18446744073709551615 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ восСмь Π±Π°ΠΉΡ‚ памяти Π½Π° Π»ΡŽΠ±Ρ‹Ρ… систСмах.

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… int ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π² случаС использования ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… long ΠΈ short. Помимо обозначСния Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (unsigned), сущСствуСт ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (signed), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ объявлСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ эквивалСнтными:

long lightspeed = 299792458;
long int lightspeed = 299792458;
signed long lightspeed = 299792458;
signed long int lightspeed = 299792458;

Числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Ρ‚ΠΈΠΏΠ° float позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ вСщСствСнныС числа Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π±Π°ΠΉΡ‚Π°Ρ… памяти.

float pi = 3.14;

По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° float, пСрСмСнная Ρ‚ΠΈΠΏΠ° double Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ вСщСствСнныС числа, Π½ΠΎ эти числа ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ Π½ΠΈΡ… отводится восСмь Π±Π°ΠΉΡ‚ памяти.

double score = 53.92819384;

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, имССтся Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… long double для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с вСщСствСнными числами с ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ.

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹

Бимвольная пСрСмСнная Ρ‚ΠΈΠΏΠ° char позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ символ Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π°ΠΉΡ‚Π΅ памяти. Π₯отя Π² качСствС значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ устанавливаСтся символ, Π² памяти хранится Π΅Π³ΠΎ цСлочислСнноС прСдставлСниС.

char initial = 'd';

Помимо ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ символьной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ сущСствуСт знаковая (signed char) ΠΈ бСззнаковая (unsigned char) ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

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

Π’ языкС C для строк Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ это дСлаСтся Π² Ρ‚Π°ΠΊΠΈΡ… языках, ΠΊΠ°ΠΊ Python. ВмСсто этого строки прСдставлСны массивами ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом Π±ΡƒΠ΄Π΅Ρ‚ рассказано Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π‘Ρ‚Ρ€ΠΎΠΊΠΈΒ».

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

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ стандарт языка C99 Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ логичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° bool (ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ… значСния true ΠΈ false), ΠΎΠ΄Π½Π°ΠΊΠΎ Π² случаС компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ компилятора Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ошибки.

Новый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… объявлСн ΠΊΠ°ΠΊ _Bool, хотя Π² случаС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ модуля <stdbool.h> Ρ‚ΠΈΠΏ _Bool Π±ΡƒΠ΄Π΅Ρ‚ эквивалСнтСн Ρ‚ΠΈΠΏΡƒ bool.

  1. #include <stdio.h>

  2. #include <stdbool.h>

  3. Β 

  4. int main()

  5. {

  6. Β  Β  bool run = false;

  7. Β 

  8. Β  Β  if (run == true)

  9. Β  Β  Β  Β  printf("Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚...\n");
  10. Β  Β  else

  11. Β  Β  Β  Β  printf("НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. \n");
  12. Β 

  13. Β  Β  return 0;

  14. }

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: для использования Ρ‚ΠΈΠΏΠ° bool ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ -std=c99.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Если пСрСмСнная объявлСна Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π›ΡŽΠ±Π°Ρ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° использования Π΅Π΅ ΠΈΠ·Π²Π½Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ сообщСния ΠΎΠ± ошибкС. Вакая пСрСмСнная называСтся локальной.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ· любого Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

БтатичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

БтатичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Вакая пСрСмСнная инициализируСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ПослС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ сохраняСтся Π² памяти ΠΈ Π½Π΅ измСняСтся Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

БтатичСская пСрСмСнная ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ слова static, Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΏΠ΅Ρ€Π΅Π΄ описаниСм Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

static int age;

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

  1. #include <stdio.h>

  2. Β 

  3. {

  4. Β  Β  int var = 1;

  5. Β  Β  static int svar = 1;

  6. Β 

  7. Β  Β  printf("var = %d, static = %d\n", var, svar);
  8. Β  Β  var++;

  9. Β  Β  svar++;

  10. }

  11. Β 

  12. int main()

  13. {

  14. Β  Β  int i;

  15. Β  Β  for (i = 0; i < 5; i++)

  16. Β  Β  {

  17. Β  Β  }

  18. Β 

  19. Β  Β  return 0;

  20. }

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» исходного ΠΊΠΎΠ΄Π°

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова

Π―Π·Ρ‹ΠΊ C ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ использованиС Π½Π°Π±ΠΎΡ€Π° Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΈΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

  • auto
  • break
  • case
  • char
  • continue
  • default
  • do
  • double
  • else
  • enum
  • extern
  • float
  • for
  • goto
  • if
  • int
  • long
  • register
  • return
  • short
  • sizeof
  • static
  • struct
  • switch
  • typedef
  • union
  • unsigned
  • void
  • while

ИмСна ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с Π±ΡƒΠΊΠ²Π΅Π½Π½ΠΎΠ³ΠΎ символа ΠΈΠ»ΠΈ символа подчСркивания ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ†ΠΈΡ„Ρ€Ρ‹. 31, Ρ‡Ρ‚ΠΎ составляСт ΠΎΡ‚ –2 147 483 648 Π΄ΠΎ 2 147 483 647 ΠΈΠ»ΠΈ ΠΎΠΊΠΎΠ»ΠΎ -2 ΠΌΠ»Ρ€Π΄ Π΄ΠΎ +2 ΠΌΠ»Ρ€Π΄. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, Π½ΠΎ ΠΎΠ½ сдвинут Π½Π° числовой Π»ΠΈΠ½ΠΈΠΈ.

25

biscuit

29 Авг 2019 в 08:21

5 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²

Π›ΡƒΡ‡ΡˆΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚

ΠΏ

3

000
001
010
011
100
101
110
111

ΠΏ

  • Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΎΡ‚ 0 Π΄ΠΎ 2 n -1 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ
    (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ (2 n -1) — (0) + 1 = 2 ΠΏ Ρ€Π°Π·Π½Ρ‹Π΅ значСния).

    НапримСр,

    000   0
    001   1
    010   2
    011   3
    100   4
    101   5
    110   6
    111   7
    
  • Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΎΡ‚ -2 n-1 Π΄ΠΎ 2 n-1 -1 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ
    (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ (2 n-1 ) > -1) — (-2 n-1 ) + 1 = 2 n Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ).

    НапримСр,

    100  -4
    101  -3
    110  -2
    111  -1
    000   0
    001   1
    010   2
    011   3
    

[ 1 ]


  1. На своСм Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΅ΡΡ‚ΡŒ Π΄Π²Π° способа записи нуля (0000. ..0000 2 ΠΈ 1000 … 0000 2 ), поэтому Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ составляСт всСго ΠΎΡ‚ -2 n-1 -1 Π΄ΠΎ 2 ΠΏ — 1 -1 . Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ всС соврСмСнныС ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ Π΄Π²ΡƒΡ….

23

ikegami
24 Π€Π΅Π² 2020 Π² 13:47

Для Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1 Ρ€Π°Π²Π½ΠΎ Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСно Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ этого Ρ‚ΠΈΠΏΠ°. Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ -1 unsigned int, конвСрсия ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π² соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ стандарта C.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ значСния со Π·Π½Π°ΠΊΠΎΠΌ Π² цСлочислСнный Ρ‚ΠΈΠΏ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 6.3.1.3p2 Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° стандарт C:

Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Ссли Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ конвСртируСтся ΠΏΡƒΡ‚Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ слоТСния ΠΈΠ»ΠΈ вычитания Π±ΠΎΠ»Π΅Π΅ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСно Π² Π½ΠΎΠ²ΠΎΠΌ Ρ‚ΠΈΠΏΠ΅ ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ окаТСтся Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. 60

60) ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ матСматичСского значСния, Π° Π½Π΅ значСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° выраТСния

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΠΊΠ°ΠΊ Π² вашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ρ‡Ρ‚ΠΎ unsigned int ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚ 0 Π΄ΠΎ 4 294 967 295, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1 прСобразуСтся ΠΏΡƒΡ‚Π΅ΠΌ слоТСния -1 + 4 294 967 296 = 4 294 967 295. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ происходит нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа прСдставлСны Π² Π΄Π°Π½Π½ΠΎΠΉ систСмС. Π’ΠΎ ΠΆΠ΅ самоС для ΠΊΠΎΠΌΠΏΠ»ΠΈΠΌΠ΅Π½Ρ‚Π° Π΄Π²ΠΎΠΈΡ…, ΠΊΠΎΠΌΠΏΠ»ΠΈΠΌΠ΅Π½Ρ‚Π° своих ΠΈΠ»ΠΈ Π·Π½Π°ΠΊΠ° ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ прСдставлСниС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ значСния Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с прСдставлСниСм -1.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ 4-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ значСния -1 Π² Ρ‚ΠΈΠΏ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ 15. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ этих чисСл выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

                sign-and magnitude    ones' complement   two's complement
  -1   (signed)               1001                1110               1111
  15 (unsigned)               1111                1111               1111

Π₯отя Π² случаС дополнСния Π΄ΠΎ Π΄Π²ΡƒΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ прСобразования остаСтся Ρ‚Π΅ΠΌ ΠΆΠ΅ прСдставлСниСм, Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄Π²ΡƒΡ… случаях ΠΎΠ½ измСняСтся. Для дополнСния прСдставлСниС -1 Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ для 14, Π° для Π·Π½Π°ΠΊΠ° ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ прСдставлСниС -1 Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ для 9.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ описали ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ дополнСния ΠΊ Π΄Π²ΡƒΠΌ, скорСС всСго, ΠΊΠ°ΠΊ эти Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ это (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΡΠΌΡ‹ΡΠ»ΠΈΠ²Π°ΡŽΡ‚ прСдставлСниС -1 ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ°), ΠΎΠ΄Π½Π°ΠΊΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния языка C ΠΊΠ°ΠΊ абстрактной ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я описал, являСтся СдинствСнным ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ способ выполнСния этого прСобразования.

3

dbush
29 Авг 2019 в 18:53

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ прСвосходному объяснСнию @ Yunnosch ΠΎ числах Π±Π΅Π· Π·Π½Π°ΠΊΠ°, ΠΏΠΎΡ‡Ρ‚ΠΈ всС соврСмСнныС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Β«Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ…Β» для прСдставлСния Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… чисСл со Π·Π½Π°ΠΊΠΎΠΌ. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π΄Π²ΡƒΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ Π±ΠΈΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС Β«Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π°Β», Π° Π±ΠΈΡ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ числа +1. Π’Π°ΠΊ, для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° с 3 Π±ΠΈΡ‚Π°ΠΌΠΈ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π±Π΅Π· Π·Π½Π°ΠΊΠ° Ρ€Π°Π²Π΅Π½ ΠΎΡ‚ 0 Π΄ΠΎ 7, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ для подписанных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚ -4 Π΄ΠΎ 3:

100 : -4
101 : -3
110 : -2
111 : -1
000 :  0
001 :  1
010 :  2
011 :  3

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для чисСл со Π·Π½Π°ΠΊΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ большС, Ρ‡Π΅ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ чисСл 0 Π½Π΅ являСтся Π½ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ прСдставлСнии 0 Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ сбрасываСт Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ Π±ΠΈΡ‚, 0 являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ области ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл, поэтому остаСтся доступным ΠΎΠ΄Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число.

5

daShier
29 Авг 2019 в 06:08

Рассмотрим значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с 2 Π±ΠΈΡ‚Π°ΠΌΠΈ:

00 : 0
01 : 1
10 : 2
11 : 3

Π˜Ρ… 4, 2 Π² стСпСни 2. 2-1
ΠΈΠ»ΠΈ 2 2 -1

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π²Π΄Π²ΠΎΠ΅ большС, Π΄ΠΎΠ±Π°Π²ΠΈΠ²

100 : 4
101 : 5
110 : 6
111 : 7

ВсСго 8, Π½ΠΎ наибольшСС 7.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Β«-1Β» ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всСгда ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ· 2 n ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для 0,
2-Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для 1, 3-Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для 2.
Π’ ΠΊΠΎΠ½Ρ†Π΅ (2 n ) -ΠΉ ΠΎΠ΄ΠΈΠ½ нСдоступСн для 2 n , ΠΎΠ½ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для 2 n -1.

47

Yunnosch
29 Авг 2019 в 06:30

Π“Π΄Π΅ Π²Ρ‹ нашли этот Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ Π°Π±Π·Π°Ρ†? ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ это Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ 2, Π½ΠΎ -1 находится Π½Π΅ Π² Ρ‚ΠΎΠΌ мСстС.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ C, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Ρ†Π΅Π»Ρ‹Π΅ числа со Π·Π½Π°ΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Π·Π½Π°ΠΊΠΎΠΌ / Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ симмСтричСн ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нуля (с 2-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ комбинациями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π° ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ 0, поэтому ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€).n.

Если Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΡ‚ Π·Π½Π°ΠΊΠ°, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число : -INT_MIN ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ со Π·Π½Π°ΠΊΠΎΠΌ (Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСно ΠΊΠ°ΠΊ {{X1 } } ; это Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа. Или с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ, -INT_MIN = INT_MIN. Π­Ρ‚ΠΎ «аномалия ΠΊΠΎΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π° 2Β». https://en.wikipedia.org/wiki/Two%27s_complement#Most_negative_number

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Ссли выполняСтС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ с Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,
unsigned abs = i >= 0 ? i : -(unsigned)i;

(ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π² unsigned Π² C ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΎ Π½Π΅ окаТСтся Π² прСдставимом Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅. Π’ C это Π½Π΅ зависит ΠΎΡ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ со Π·Π½Π°ΠΊΠΎΠΌ-Ρ†Π΅Π»Ρ‹ΠΌ числом; Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ value . Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ (uint8_t)-1 всСгда 255. Для дополнСния 2 ΠΎΠ½ просто ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ шаблон. Для Π·Π½Π°ΠΊΠ° / Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ дополнСния рСализация C Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° Π±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ для привСдСния ΠΎΡ‚ подписи ΠΊ подписи. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ я сдСлал это Π΄ΠΎ отрицания, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ 0 - i с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌ пСрСносом.)

2

Peter Cordes
30 Авг 2019 в 00:09

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ — ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ, ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

[Π‘Π•Π—_Π—Π’Π£ΠšΠ] ЗдравствуйтС. ΠœΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Π±Π»ΠΎΠΊ, посвящСнный Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² языка C++. Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ΄ΠΈΠ½ цСлочислСнный Ρ‚ΠΈΠΏ β€” это Ρ‚ΠΈΠΏ int, ΠΈ ΠΌΡ‹ ΠΈΠΌ Π²Π΅Π·Π΄Π΅ пользовались. Но всС-Ρ‚Π°ΠΊΠΈ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ просто Ρ‚Π°ΠΊ Ρ€Π°Π΄ΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ образования Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ языка C++ β€” ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Для этого вспомним Π·Π°Π΄Π°Ρ‡Ρƒ «БрСдняя Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π°Β» ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ курса. Π§Ρ‚ΠΎ Ρ‚Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ? Нам Π±Ρ‹Π» Π΄Π°Π½ Π½Π°Π±ΠΎΡ€ наблюдСний Π·Π° Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€ΠΎΠΉ, скаТСм, Π² Π²ΠΈΠ΄Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° (Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ t), ΠΈ Ρƒ нас Π±Ρ‹Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ значСния Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 8, 7 ΠΈ 3. НуТно Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΡ‚ΠΈ срСднСС арифмСтичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ Π·Π° всС Π΄Π½ΠΈ ΠΈ Π·Π°Ρ‚Π΅ΠΌ вывСсти Π½ΠΎΠΌΠ΅Ρ€Π° Π΄Π½Π΅ΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ Π±Ρ‹Π»ΠΎ большС, Ρ‡Π΅ΠΌ срСднСС арифмСтичСскоС. Π’ частности, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ срСднСС арифмСтичСскоС. Как это ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ? МоТно Π±Ρ‹Π»ΠΎ, Π²ΠΎΡ‚, собствСнно, имСя Π΄Π°Π½Π½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ с наблюдСниями… Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ Π΅Π³ΠΎ Ρ‡ΠΈΡ‚Π°Π»ΠΈ ΠΈΠ· исходного Ρ„Π°ΠΉΠ»Π°, здСсь Ρƒ мСня ΠΎΠ½ Π·Π°Π΄Π°Π½ просто явно. Надо Π±Ρ‹Π»ΠΎ завСсти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с суммой ΠΈ Π·Π°Ρ‚Π΅ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ for ΠΏΡ€ΠΎΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ t, Ρ‚Π΅ΠΌ самым Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму β€” суммарноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹, ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒ эту сумму Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. ВсС каТСтся Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ со срСдним Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ вывСсти послС этого. Π’ΠΎΡ‚ Π±Ρ‹Π» ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Какая Π±ΡƒΠ΄Π΅Ρ‚ срСдняя Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π°? 8 + 7 + 3 β€” это 18. Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° 3, получаСтся 6. Π”ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ 6. ЗапускаСм ΠΊΠΎΠ΄ ΠΈ Π²ΠΈΠ΄ΠΈΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 6, ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но Ссли Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‚ΠΎ Π² Ρ‚ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ Π±Ρ‹Π»ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: Π²Π°ΠΌ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ всС значСния Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, Π½Ρƒ ΠΈΠ»ΠΈ Π½Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ссли Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Ρƒ вас Π² исходном Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, βˆ’8, βˆ’7 ΠΈ 3, ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. ΠŸΠΎΡ‡Π΅ΠΌΡƒ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ… казалось Π±Ρ‹, βˆ’8 βˆ’ 7 + 3 β€” это βˆ’12. βˆ’12 / 3 β€” Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ βˆ’4. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ получится. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠΎΠ΄, запускаСм ΠΈ Π²ΠΈΠ΄ΠΈΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ странноС. ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ 1431655761. Π­Ρ‚ΠΎ Π½Π΅ βˆ’4. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ? На самом Π΄Π΅Π»Π΅ ΠΌΡ‹ ΠΎΡ‚ нСзнания Π½Π΅Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ использовали Π΄Ρ€ΡƒΠ³ΠΎΠΉ цСлочислСнный Ρ‚ΠΈΠΏ языка C++. Он Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρƒ нас Π²ΠΎΡ‚ здСсь, это Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ, t.size() β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚, ΠΈ это Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ, ΠΌΡ‹ это Π½Π΅ ΡƒΡ‡Π»ΠΈ. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ рассмотрим, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²ΠΈΠ΄Π΅ΠΎ. Пока Ρ‡Ρ‚ΠΎ. Какая Π΅Ρ‰Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с цСлочислСнными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ? ΠžΡ‡Π΅Π½ΡŒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Ρƒ вас Π΅ΡΡ‚ΡŒ пСрСмСнная Ρ‚ΠΈΠΏΠ° int, Π² Π½Π΅Π΅ умСщаСтся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π²Π° ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π° β€” 2 ΠΈ Π΄Π΅Π²ΡΡ‚ΡŒ Π½ΡƒΠ»Π΅ΠΉ. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Π² C++ ΠΌΠΎΠΆΠ½ΠΎ для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ читаСмости Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ разряды Π² числС ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΎΠΉ. И эта пСрСмСнная x ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ хранится Π² Ρ‚ΠΈΠΏΠ΅ int, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π΅ вывСсти, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π΅Π΅ Π½Π° 2, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. И Π΄Π°Π²Π°ΠΉΡ‚Π΅ снова посмотрим, Ρ‡Ρ‚ΠΎ получится. Π˜Ρ‚Π°ΠΊ, запускаСм ΠΊΠΎΠ΄ ΠΈ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ x Π±Ρ‹Π»ΠΎ 2 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π°, Π° Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ большим ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом. 4 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° int Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΠ»ΠΎΡΡŒ. БоотвСтствСнно, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ особСнности цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² языка C++. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ: Π² языкС C++ ΠΏΠ°ΠΌΡΡ‚ΡŒ для цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°. Π―Π·Ρ‹ΠΊ C++ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π° вас Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ большС памяти для цСлочислСнного Ρ‚ΠΈΠΏΠ°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ позволяСт Π²Π°ΠΌ Π½Π΅ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅. Если Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Ρ†Π΅Π»Ρ‹Π΅ числа Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ большС 2 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ², язык C++ для вас Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ Π²ΠΎΡ‚ Ρ€ΠΎΠ²Π½ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ памяти, сколько достаточно для хранСния числа Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 2 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π°. БоотвСтствСнно, Ρƒ цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² языка C++ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. И Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ это ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ Π² Π·Π°Π΄Π°Ρ‡Π΅ «БрСдняя Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π°Β», Ссли Π±Ρ‹ Ρ‚Π°ΠΌ Π΄ΠΎΠΏΡƒΡΠΊΠ°Π»ΠΈΡΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ языка C++ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅. ΠŸΠΎΡ‡Π΅ΠΌΡƒ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² цСлочислСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа. БоотвСтствСнно, ΠΎΠΏΡΡ‚ΡŒ, Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·ΡΡ‚ΡŒ сСбС для этих Ρ†Π΅Π»Π΅ΠΉ цСлочислСнный Ρ‚ΠΈΠΏ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ нСльзя Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния. Π’Π΅ΠΌ самым Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, смоТСтС Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ большС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Ρƒ нас Π±Ρ‹Π²Π°ΡŽΡ‚ цСлочислСнныС Ρ‚ΠΈΠΏΡ‹. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ цСлочислСнный Ρ‚ΠΈΠΏ β€” это Ρ‚ΠΈΠΏ int. ИмСнно ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΌΡ‹ Π΅Π³ΠΎ использовали свободно Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ курсС. Π’ ΠΊΠ°ΠΊΠΎΠΌ смыслС стандартный? Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Ссли Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ auto x = 1, Ρ‚ΠΎ пСрСмСнная x ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Ρ‚ΠΈΠΏ int. Π’ΠΎ Π΅ΡΡ‚ΡŒ всС числа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ прямо Π²ΠΎΡ‚ Π² Π²ΠΈΠ΄Π΅ Ρ†ΠΈΡ„Ρ€ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π² вашСм ΠΊΠΎΠ΄Π΅, ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ int, Ссли, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠ½ΠΈ достаточно малСнькиС. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ β€” ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΅Ρ‰Π΅ ΠΎΠ½ стандартный? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивСн. Он Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивСн Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π½Π° Ρ‚ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Он Ρ€ΠΎΠ²Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π½ΠΈΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π² инструкции процСссора. И ΠΈΠΌΠ΅Π½Π½ΠΎ поэтому ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, Π²Π°ΠΌ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, Π½ΠΎ Π½Π° всСх соврСмСнных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… ΠΎΠ½ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 4 Π±Π°ΠΉΡ‚Π° ΠΈΠ»ΠΈ 32 Π±ΠΈΡ‚Π°, ΠΈ соотвСтствСнно, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” ΠΎΡ‚ βˆ’2Β³ΒΉ Π΄ΠΎ (2Β³ΒΉ βˆ’ 1), это ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 2 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π°. Но Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС Ρ€Π°Π·ΠΌΠ΅Ρ€ этого Ρ‚ΠΈΠΏΠ° зависит ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ процСссора ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ Ρ‚ΠΈΠΏΠ° int Π΅ΡΡ‚ΡŒ Π΅Π³ΠΎ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π°Π½Π°Π»ΠΎΠ³ β€” Ρ‚ΠΈΠΏ unsigned int. Π’ΠΎΡ‚ Ρ€ΠΎΠ²Π½ΠΎ Ρ‚Π°ΠΊ, Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π», Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ этого Ρ‚ΠΈΠΏΠ°; ΠΈΠ»ΠΈ просто unsigned, Π±Π΅Π· int. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ ΠΈ int, ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивСн Π½Π° вашСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅, Π½ΠΎ ΠΎΠ½ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ, соотвСтствСнно, ΠΎΠ½ Π²ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ числа ΠΎΡ‚ 0 Π΄ΠΎ (2Β³Β² βˆ’ 1). Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Π΄Π²Π° Ρ€Π°Π·Π° большС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл вмСщаСтся Π·Π° счСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΠΌ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа. Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ β€” это Ρ‚ΠΈΠΏ size_t. Π­Ρ‚ΠΎ Ρ€ΠΎΠ²Π½ΠΎ Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ size Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ языка C++, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π΅ΠΊΡ‚ΠΎΡ€. Π•Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ зависит ΠΎΡ‚ разрядности вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ size_t спроСктирован ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π²Π°ΡŽΡ‚. Если Ρƒ вас 32-битная систСма, скорСС всСго, size_t Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ 32 Π±ΠΈΡ‚Π°, Ссли 64-битная, Ρ‚ΠΎ 64 Π±ΠΈΡ‚Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ классичСскиС Ρ‚ΠΈΠΏΡ‹ языка C++. ΠŸΠΎΡ‡Π΅ΠΌΡƒ классичСскиС? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠ· языка C ΠΊ Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΈ. А Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… явно извСстСн Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€. Если Π²Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ cstdint, Ρ‚ΠΎ Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ int32_t. Π­Ρ‚ΠΎ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Ρ€ΠΎΠ²Π½ΠΎ 32 Π±ΠΈΡ‚Π°. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊ int, Π½ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π•ΡΡ‚ΡŒ Ρƒ Π½Π΅Π³ΠΎ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π°Π½Π°Π»ΠΎΠ³, это Ρ‚ΠΈΠΏ uint32_t, ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ, соотвСтствСнно, Ρ‚ΠΈΠΏΡ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² 8 Π±ΠΈΡ‚, 16 Π±ΠΈΡ‚ ΠΈ 64 Π±ΠΈΡ‚Π°. int8_t, uint8_t, int16_t, uint16_t ΠΈ int64_t, uint64_t. Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·ΡŽΠΌΠΈΡ€ΡƒΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ. Π£ нас Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ int, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 4 Π±Π°ΠΉΡ‚Π°, Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ unsigned int, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€, Π½ΠΎ ΠΎΠ½ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ, ΠΈ Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ size_t, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 4 ΠΈΠ»ΠΈ 8 Π±Π°ΠΉΡ‚. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ с извСстным Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ: int8_t, int16_t, int32_t, int64_t β€” Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΈ ΠΈΡ… Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ с прСфиксом u. Как ΠΆΠ΅ Π½Π°ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠ°? Как ΠΆΠ΅ Π½Π°ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ? ΠœΡ‹ ΠΏΠΎΠΊΠ° Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ Π·Π½Π°ΠΊΠΎΠ²ΠΎΡΡ‚ΡŒ ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΡΡ‚ΡŒ, это ΠΌΡ‹ обсудим ΠΏΠΎΠ·ΠΆΠ΅. Как ΠΆΠ΅ Π½Π°ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ°? Если Π²Π°ΠΌ достаточно стандартного Ρ‚ΠΈΠΏΠ° int, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ стандартный. Если Π²Π°ΠΌ нСдостаточно Π΅Π³ΠΎ размСрности, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ числа порядка Ρ‚Ρ€ΠΈΠ»Π»ΠΈΠΎΠ½Π°, порядка 10ΒΉΒ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ int64_t. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Сдинообразия ΠΈ вас ΠΏΡƒΠ³Π°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ int Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ 4 Π±Π°ΠΉΡ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΈΠΏ int32_t, хотя это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, нСкоторая экзотика, Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ для Сдинообразия ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. И Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π° цСлочислСнных Ρ‚ΠΈΠΏΠ°Ρ…, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ мСньшСй размСрности, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ int8_t, int16_t. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π²Ρ‹ Π·Π°Π±Ρ‹Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…? ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для этого ΠΈΠ΄Ρ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, для этого достаточно Π²Π·ΡΡ‚ΡŒ компилятор ΠΈ… НапримСр, Π²Ρ‹ Π·Π°Π±Ρ‹Π»ΠΈ, ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int16_t. Как ΡƒΠ·Π½Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ cout ΠΈ вывСсти sizeof(int16_t). Π’Π°ΠΊ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ… для этого Ρ‚ΠΈΠΏΠ°. ΠŸΡ€Π°Π²Π΄Π°, это ΠΈ Ρ‚Π°ΠΊ понятно, 16 / 8 β€” это 2: 16 Π±ΠΈΡ‚ β€” 2 Π±Π°ΠΉΡ‚Π°. Или Π²Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° int. Π’ΠΎΡ‚ я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Ρ‡Ρ‚ΠΎ Π½Π΅ гарантируСтся, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ 4 Π±Π°ΠΉΡ‚Π°, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Π½Π° ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΊΠ°ΠΊΠΎΠΉ Ρƒ Π½Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€. Запустим этот ΠΊΠΎΠ΄. 4 Π±Π°ΠΉΡ‚Π°, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда 4 Π±Π°ΠΉΡ‚Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ sizeof Π΅Ρ‰Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ°, Π½ΠΎ ΠΈ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Если Π±Ρ‹ Ρƒ вас Π±Ρ‹Π»Π° пСрСмСнная int x, скаТСм, Π²Ρ‹ Π±Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ sizeof(x). Ну Π΄Π° Π»Π°Π΄Π½ΠΎ, это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π˜Ρ‚Π°ΠΊ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ минимальноС ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ limits β€” ограничСния. И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ минимальноС ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int. Как это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ? НуТно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ: numeric_limits, Π² ΡƒΠ³Π»ΠΎΠ²Ρ‹Ρ… скобках Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вас интСрСсуСт, ΠΈ дальшС Ρ‡Π΅Ρ€Π΅Π· Π΄Π²Π° двоСточия β€” Ρ‡Ρ‚ΠΎ вас ΠΎΠ± этом Ρ‚ΠΈΠΏΠ΅ интСрСсуСт. Π― Π²Ρ‹Π·Ρ‹Π²Π°ΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ min: мСня интСрСсуСт, собствСнно, минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого Ρ‚ΠΈΠΏΠ°, Π½Ρƒ ΠΈ Π΄Π°Π²Π°ΠΉΡ‚Π΅ для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρ‹ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π΅Ρ‰Π΅ ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого Ρ‚ΠΈΠΏΠ°: numeric_limits&lt;int&gt;::max. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ минимальноС ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int. На самом Π΄Π΅Π»Π΅ ΠΌΡ‹ это ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, это βˆ’2Β³ΒΉ ΠΈ (2Β³ΒΉ βˆ’ 1). Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° эти числа. Π― Π·Π°Π±Ρ‹Π» ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки. max β€” это функция, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π°Π΄ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, Π΄Π°ΠΆΠ΅ Ссли Π½Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π—Π°ΠΏΡƒΡΠΊΠ°ΡŽ ΠΊΠΎΠ΄ ΠΈ Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ int ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 4 Π±Π°ΠΉΡ‚Π°, Π΅Π³ΠΎ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” это βˆ’2147483648, максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, Π½ΠΎ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ мСньшС, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π΄Π²Π° ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, этот ΠΆΠ΅ ΠΏΡ€ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Π²Ρ‹ Π²Π΄Ρ€ΡƒΠ³ Π² Ρ‡ΡƒΠΆΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ цСлочислСнный Ρ‚ΠΈΠΏ, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π²Π°ΠΌ Π½Π΅ рассказали. НапримСр, ΠΌΡ‹ Π²Π°ΠΌ Π½Π΅ рассказали ΠΏΡ€ΠΎ Ρ‚ΠΈΠΏ long int, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ вмСсто Π½Π΅Π³ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ ΠΈΠ· модуля cstdint. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Ρ‚ΠΈΠΏ long int: ΠΊΠ°ΠΊΠΎΠΉ Ρƒ Π½Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ минимальноС ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 4 ΠΈΠ»ΠΈ 8 Π±Π°ΠΉΡ‚. Π”Π°Π²Π°ΠΉΡ‚Π΅ скомпилируСм ΠΊΠΎΠ΄, запустим, ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ€Π°Π²Π΅Π½ Ρ‚ΠΈΠΏΡƒ int, Π½ΠΎ это Π½Π΅ всСгда Ρ‚Π°ΠΊ. Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ Π² этом Π²ΠΈΠ΄Π΅ΠΎ? ΠœΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π² языкС C++ большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ цСлочислСнного Ρ‚ΠΈΠΏΠ°, Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏ int. И Ρ‡Π΅ΠΌ эти цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ? Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ, Ρ‚ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚, ΠΈ, соотвСтствСнно, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π·Π½Π°ΠΊΠΎΠ²ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ»ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΡΡ‚ΡŒΡŽ. НСкоторыС Ρ‚ΠΈΠΏΡ‹ Π½Π΅ хранят осознанно ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа. ΠœΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ int β€” это стандартный цСлочислСнный Ρ‚ΠΈΠΏ, Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π°Π½Π°Π»ΠΎΠ³ unsigned int, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ size_t β€” это Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ size Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², Ρ‚ΠΈΠΏ для хранСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². ΠœΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΏΡ€ΠΎ Ρ‚ΠΈΠΏΡ‹, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€, Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΡƒΠ·Π½Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎ цСлочислСнному Ρ‚ΠΈΠΏΡƒ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ Π΅Π³ΠΎ минимальноС ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. А дальшС ΠΌΡ‹ ΠΊΠ°ΠΊ Ρ€Π°Π· научимся Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‚Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ, β€” ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² языкС программирования C-51*

ОписаниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² языкС программирования C ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Π΅ΠΉΡˆΠ΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв опрСдСляСт объСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
ΠžΠ±Ρ‹Ρ‡Π½ΠΎ большой объСм Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ³ΠΎ модуля ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Π·Π²Π°Π½ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ объявлСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² исходном тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ
рСгистрам ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ΠΈ внСшним рСсурсам Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ устройства Ρ‚ΠΎΠΆΠ΅ производится ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π’ языкС программирования C51 любая пСрСмСнная Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ объявлСна Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ использования этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Как
ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, этот язык программирования ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ²
сСмСйства MCS-51, поэтому Π² составС языка Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ внутрСнняя структура этого сСмСйства ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ². Π­Ρ‚ΠΈ
особСнности ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π²ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ язык программирования C-51 Π½Π΅ отличаСтся ΠΎΡ‚
стандарта ANSI.

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² языкС программирования C51 прСдставляСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

   [спСцификатор класса памяти]  спСцификатор Ρ‚ΠΈΠΏΠ°  [спСцификатор Ρ‚ΠΈΠΏΠ° памяти] ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ [=ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€] [,ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ [= ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€] ]...

ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ — ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ простой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π»ΠΈΠ±ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТная конструкция с ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ скобками, ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ скобками
ΠΈΠ»ΠΈ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ (Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π·Π²Π΅Π·Π΄ΠΎΡ‡Π΅ΠΊ).

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ° — ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏ объявляСмой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ языкС БИ имССтся
стандартный Π½Π°Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ (ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅) Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π˜Π½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€ — Π·Π°Π΄Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ список Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅) присваиваСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈ объявлСнии.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ класса памяти — опрСдСляСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов языка Π‘: auto, bit, extern, register, sbit, sfr, sfr16 static auto, extern, register, static, ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚,
ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, с ΠΎΠ΄Π½ΠΎΠΉ стороны, Π° с Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости этой
ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚.Π΅., ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ… частСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΊ Π½Π΅ΠΉ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ° памяти — опрСдСляСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡˆΠ΅ΡΡ‚ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов языка Π‘-51: code, data, idata, bdata, xdata, pdata ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚,
Π² ΠΊΠ°ΠΊΠΎΠΉ области памяти ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π° пСрСмСнная.

ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова для опрСдСлСния основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…

     Π¦Π΅Π»Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…:     Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой:
       bit                            float
       sbit
       char
       int
       short
       long
       signed
       unsigned
       sfr
       sfr16

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ любого Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объявлСна ΠΊΠ°ΠΊ нСизмСняСмая. Π­Ρ‚ΠΎ достигаСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова const ΠΊ спСцификатору Ρ‚ΠΈΠΏΠ°. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠΎΠΌ const
ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, Ρ‚.Π΅. этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСно Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ссли послС слова const
отсутствуСт спСцификатор Ρ‚ΠΈΠΏΠ°, Ρ‚ΠΎ подразумСваСтся спСцификатор Ρ‚ΠΈΠΏΠ° int. Если ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово const стоит ΠΏΠ΅Ρ€Π΅Π΄ объявлСниСм составных Ρ‚ΠΈΠΏΠΎΠ² (массив, структура, смСсь,
пСрСчислСниС), Ρ‚ΠΎ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Π½Π΅ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ, Ρ‚.Π΅. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова const:

      const float A=2.128E-2;
      const B=286; //подразумСваСтся const int B=286

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с спСцификатором класса памяти Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ ΠžΠ—Π£. ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ контролируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° этапС трансляции. Для размСщСния
ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠŸΠ—Π£ Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ спСцификатором Ρ‚ΠΈΠΏΠ° памяти code

Π¦Π΅Π»Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Для опрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ… Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ области памяти, выдСляСмой ΠΏΠΎΠ΄
ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (Ρ‚Π°Π±Π». 6).

Π’Π°Π±Π»ΠΈΡ†Π° 6

Π’ΠΈΠΏΠ Π°Π·ΠΌΠ΅Ρ€ памяти Π² Π±ΠΈΡ‚Π°Ρ…Π Π°Π·ΠΌΠ΅Ρ€ памяти Π² Π±Π°ΠΉΡ‚Π°Ρ…Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
bit1Β ΠΎΡ‚ 0 Π΄ΠΎ 1
char81ΠΎΡ‚ -128 Π΄ΠΎ 127
unsigned shar81oΡ‚ 0 Π΄ΠΎ 255
int, short162ΠΎΡ‚ -32768 Π΄ΠΎ 32767
long324ΠΎΡ‚ -2 147 483 648 Π΄ΠΎ 2 147 483 647
unsigned int, unsigned short162ΠΎΡ‚ 0 Π΄ΠΎ 65535
unsigned long324ΠΎΡ‚ 0 Π΄ΠΎ 4 294 967 295
sbit1Β 0 ΠΈΠ»ΠΈ 1
sfr81oΡ‚ 0 Π΄ΠΎ 255
sfr16162ΠΎΡ‚ 0 Π΄ΠΎ 65535

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова signed ΠΈ unsigned Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹. Они ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ интСрпрСтируСтся Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π±ΠΈΡ‚ объявляСмой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚.Π΅., Ссли ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅
слово unsigned, Ρ‚ΠΎ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π±ΠΈΡ‚ интСрпрСтируСтся ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ числа, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π±ΠΈΡ‚ интСрпрСтируСтся ΠΊΠ°ΠΊ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ. Π’ случаС отсутствия ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова
unsigned цСлая пСрСмСнная считаСтся Π·Π½Π°ΠΊΠΎΠ²ΠΎΠΉ. Π’ Ρ‚ΠΎΠΌ случаС, Ссли спСцификатор Ρ‚ΠΈΠΏΠ° состоит ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° signed ΠΈΠ»ΠΈ unsigned ΠΈ Π΄Π°Π»Π΅Π΅ слСдуСт
ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ пСрСмСнная Ρ‚ΠΈΠΏΠ° int. НапримСр:

unsigned int n;  //Π‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΡ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΠ΅ число n
unsigned int b;
int c;           //подразумСваСтся  signed   int c
unsigned d;      //подразумСваСтся  unsigned int d
signed f;        //подразумСваСтся  signed   int f

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ° char ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдставлСния ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ символа ΠΈΠ»ΠΈ для объявлСния строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ². Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° char
являСтся ΠΊΠΎΠ΄ (Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 1 Π±Π°ΠΉΡ‚), ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ прСдставляСмому символу.

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ константы Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ unsigned. Π­Ρ‚ΠΎ достигаСтся ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ суффикса u ΠΈΠ»ΠΈ U послС константы,
константа Π±Π΅Π· этого прСфикса считаСтся Π·Π½Π°ΠΊΠΎΠ²ΠΎΠΉ.

НапримСр:

0xA8C   //int  signed
01786l  //long signed
0xF7u   //int  unsigned

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

Для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€
Ρ‚ΠΈΠΏΠ° float. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ double Ρ‚ΠΎΠΆΠ΅ допустим Π² языкС программирования C51, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ точности
Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π° с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ Ρ‚ΠΈΠΏΠ° float Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 4 Π±Π°ΠΉΡ‚Π°. Из Π½ΠΈΡ… 1 Π±ΠΈΡ‚ отводится для Π·Π½Π°ΠΊΠ°, 8 Π±ΠΈΡ‚ для ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠΉ
экспонСнты ΠΈ 23 Π±ΠΈΡ‚Π° для мантиссы. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ мантиссы всСгда Ρ€Π°Π²Π΅Π½ 1, поэтому ΠΎΠ½ Π½Π΅ заполняСтся,
Π² связи с этим Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Ρ€Π°Π²Π΅Π½ ΠΎΡ‚ Β±1.175494E-38 Π΄ΠΎ Β±3.402823E+38.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой:

float f, a, b;

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ пСрСчислимого Ρ‚ΠΈΠΏΠ°

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ списка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, называСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСрСчислимого Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пСрСчислСниСм.

ИспользованиС Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ эквивалСнтно ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ Ρ†Π΅Π»ΠΎΠΉ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ char ΠΈΠ»ΠΈ int. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСрСчислимого Π²ΠΈΠ΄Π°
Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° Π² зависимости ΠΎΡ‚ максимального значСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ констант. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
пСрСчислимого Ρ‚ΠΈΠΏΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ вмСсто Π±Π΅Π·Π»ΠΈΠΊΠΈΡ… чисСл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° констант, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ понятны ΠΈ Π»Π΅Π³Ρ‡Π΅ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ.

НапримСр, вмСсто использования чисСл 1,2,3,4,5,6,7 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ названия Π΄Π½Π΅ΠΉ Π½Π΅Π΄Π΅Π»ΠΈ: Poned, Vtorn, Sreda, Chetv, Pjatn, Subb, Voskr. ΠŸΡ€ΠΈ этом
ΠΊΠ°ΠΆΠ΄ΠΎΠΉ константС Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ своС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ число. Однако использованиС ΠΈΠΌΠ΅Π½ констант ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π±ΠΎΠ»Π΅Π΅ понятной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ,
транслятор сам позволяСт ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ использования констант ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ использования константы, Π½Π΅ входящСй Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Π·Π°Ρ€Π°Π½Π΅Π΅ список,
Π²Ρ‹Π΄Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ошибкС.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ enum Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² индСксных выраТСниях ΠΈ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Π² арифмСтичСских опСрациях ΠΈ Π² опСрациях ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ. НапримСр:

if(rab_ned == SUB) dejstvie = rabota [rab_ned];

ΠŸΡ€ΠΈ объявлСнии пСрСчислСния опрСдСляСтся Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСрСчислСния ΠΈ опрСдСляСтся список ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… констант, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ списком пСрСчислСния.
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ этого списка являСтся Ρ†Π΅Π»ΠΎΠ΅ число. ОбъявлСниС пСрСчислимой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ начинаСтся с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова enum ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСно
Π² Π΄Π²ΡƒΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…:

  1. enum [имя Ρ‚ΠΈΠΏΠ° пСрСчислСния] {список констант} имя1 [,имя2 …];
  2. enum имя пСрСчислСния ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ [,ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ..];

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈΠΌΠ΅Π½Π° ΠΈ значСния констант Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² спискС констант. ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ имя Ρ‚ΠΈΠΏΠ° объявляСмой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ — это ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
прСдставляСт собой Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ списку констант. Π—Π° списком констант записываСтся имя ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Бписок констант содСрТит ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько конструкций Π²ΠΈΠ΄Π°:

ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ [= константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅]

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ — это имя константы. ВсС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² спискС enum Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Π’ случаС Ссли константС явным
ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ задаСтся число, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ — Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 ΠΈ Ρ‚.Π΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ rab_ned ΠΈ Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, совмСстимых с этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, week выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

enum week {SUB = 0, /* константС SUB присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 */
           VOS = 0, /* константС VOS присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 */
           POND,    /* константС POND присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 */
           VTOR,    /* константС VTOR присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2 */
           SRED,    /* константС SRED присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3 */
           HETV,    /* константС HETV присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 4 */
           PJAT     /* константС PJAT присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5 */
          } rab_ned;

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, связанный с константным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ этим константным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния константного
выраТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ int ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ Π² спискС, Ссли этот ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚
своСго константного выраТСния, присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π²Π½ΠΎΠ΅ константному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° плюс 1. ИспользованиС констант Π΄ΠΎΠ»ΠΆΠ½ΠΎ
ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ:

  1. ОбъявляСмая пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ значСния констант.
  2. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² спискС констант Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ ΠΎΡ‚ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ области видимости, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠΌΠ΅Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…
    ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… списков констант.
  3. ИмСна Ρ‚ΠΈΠΏΠΎΠ² пСрСчислСний Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠΌΠ΅Π½ Ρ‚ΠΈΠΏΠΎΠ² пСрСчислСний, структур ΠΈ смСсСй Π² этой ΠΆΠ΅ области видимости.
  4. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° послСдним элСмСнтом списка пСрСчислСния.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСрСчислимого Ρ‚ΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡƒΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅. НапримСр:

enum week rab1;

К ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСрСчислимого Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠŸΡ€ΠΈ этом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ
ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сдСлано, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΡ‹Π²Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° typedef. НапримСр:

Typedef enum {SUB = 0, /* константС SUB присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 */
              VOS = 0, /* константС VOS присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 */
              POND,    /* константС POND присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 */
              VTOR,    /* константС VTOR присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2 */
              SRED,    /* константС SRED присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3 */
              HETV,    /* константС HETV присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 4 */
              PJAT     /* константС PJAT присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5 */
             } week;

Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ опрСдСляСт Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΎΡ‚ стандартного. Π’ дальнСйшСм этот Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для
объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.


* Для Ρ‚Π΅Ρ… Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ
Ρ‡Ρ‚ΠΎ Π²Ρ‹ΡˆΠ»ΠΈ Π½Π° эту страницу ΠΏΠΎ поиску ΠΏΡ€ΠΎΡˆΡƒ
ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ здСсь
рассматриваСтся Π½Π΅ стандартный язык
программирования Π‘, Π° язык, Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊ
ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌ сСрии MCS-51.
Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ отличия!

[Назад] [Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅]
[Π’ΠΏΠ΅Ρ€Ρ‘Π΄]

int, short, long, long long range

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ подписанных ΠΈ нСподписанных Ρ‚ΠΈΠΏΠΎΠ²: Ρ†Π΅Π»Ρ‹Π΅ числа int, short ΠΈ long всС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для подписанных Ρ‚ΠΈΠΏΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Ρ‚ΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ ΠΊΠ°ΠΊ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±Π΅Π· Π·Π½Π°ΠΊΠ° long. Π’ΠΈΠΏ unsigned int ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сокращСн ΠΊΠ°ΠΊ unsigned, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ unsigned Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ спСцификатора Ρ‚ΠΈΠΏΠ° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ unsigned int.

Один Π±Π°ΠΉΡ‚ прСдставляСт восСмь Π±ΠΈΡ‚ΠΎΠ², Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ: 1 Π±Π°ΠΉΡ‚ = 8 Π±ΠΈΡ‚;

Β«C ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈΒ» писал: long ΠΈ int: Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прСдусматриваСт, Ρ‡Ρ‚ΠΎ long Π½Π΅ мСньшС Π΄Π»ΠΈΠ½Ρ‹ int, Π° int Π½Π΅ мСньшС Π΄Π»ΠΈΠ½Ρ‹ short.
Β 

Имя Ρ‚ΠΈΠΏΠ° ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π±Π°ΠΉΡ‚ΠΎΠ² Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
signed char        1         -2^7 ~ 2^7-1    -128~+127

short int          2         -2^14 ~ 2^14-1  -32768~+32767

int                4         -2^31 ~ 2^31-1  -2147483648~+2147483647
unsigned int       4         0 ~ 2^32-1      0 ~ 4294967295

 long int 4 -2 ^ 31 ~ 2 ^ 31-1 -2147483648 ~ + 2141483647 (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ int)
unsigned long      4         0 ~ 2^32-1      0~4294967295

long long int      8         -2^63 ~ 2^63-1  -9223372036854775808~+9223372036854775807
unsigned long long 8         0 ~ 2^64-1      18446744073709551615


 МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ __int64: 9223372036854775807
 МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ __int64: -9223372036854775808
 МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° __int64: 18446744073709551615

Π’ частности, слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΄Π°Π½Π½Ρ‹Ρ…, прСдставлСнный int ΠΈ long, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ², поэтому, ΠΊΠΎΠ³Π΄Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ прСдставлСния int Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достигнут, использованиС long Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π’ этом случаС трСбуСтся long long.

PS: Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π΅Π» Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° сдвига Π²Π»Π΅Π²ΠΎ (<<). НапримСр:

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ int ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ ΠΊΠ°ΠΊ :-( 1 << 31) ~ ((1 << 31) -1)

Π‘Π΄Π²ΠΈΠ³ Π½Π° ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚ Π²Π»Π΅Π²ΠΎ эквивалСнтСн ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡŽ 2, Π»Π΅Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сдвига ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Π΅ΠΌ слоТСниС ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅! !
Β 

Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… | Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ 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 — ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… — это абстракция, которая примСняСтся ΠΊ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ памяти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ этот Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ памяти ΠΊΠ°ΠΊ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

НапримСр, ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ состоит ΠΈΠ· 8 Π±ΠΈΡ‚ памяти.8 ΠΈΠ»ΠΈ 256 ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ· 8 Π±ΠΈΡ‚.

Π—Π΄Π΅ΡΡŒ вступаСт Π² ΠΈΠ³Ρ€Ρƒ концСпция Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° — ΠΊΠ°ΠΊ Π½Π°ΠΌ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ эти 256 ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΉ для использования Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½?

Один ΠΈΠ· способов — ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈΠ· 256 ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ ΠΊΠ°ΠΊ 0 , Π° послСднюю ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊ 255 :

  Π±Π°ΠΉΡ‚: 0 0 0 0 0 0 0 0 <- ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ Β«0Β»
byte: 0 0 0 0 0 0 0 1 <- ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ "1"

        .. скоро ..

byte: 1 1 1 1 1 1 1 0 <- ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ "254"
byte: 1 1 1 1 1 1 1 1 <- ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ "255"
  

Для этого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ составляСт ΠΎΡ‚ 0 Π΄ΠΎ 255 .Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ называСтся Π±Π°ΠΉΡ‚ΠΎΠΌ Π±Π΅Π· Π·Π½Π°ΠΊΠ° , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π±Π΅Π· Π·Π½Π°ΠΊΠ° , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°ΠΊΠ°. По сути, это обрабатываСтся Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ всС Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ нас 256 ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎ, Ссли ΠΌΡ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ ΠΈΠ· Π½ΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа, Π° другая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° - ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа? Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ присваиваСм Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

  Π±Π°ΠΉΡ‚: 0 1 1 1 1 1 1 1 <- ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ "127"
byte: 0 1 1 1 1 1 1 0 <- ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ Β«126Β»

        .. скоро ..

byte: 0 0 0 0 0 0 0 1 <- ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ "0"
byte: 0 0 0 0 0 0 0 0 <- ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ "0"
byte: 1 1 1 1 1 1 1 1 <- ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ Β«-1Β»

        .. скоро ..

Π±Π°ΠΉΡ‚: 1 0 0 0 0 0 0 1 <- ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ "-127"
byte: 1 0 0 0 0 0 0 0 <- ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ "-128"
  

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΠΎΠ΅ прСдставлСниС называСтся систСмой «дополнСния Π΄ΠΎ Π΄Π²ΡƒΡ…Β», Π° привСдСнная Π²Ρ‹ΡˆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π±Ρ‹Π»Π° Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄ΠΎ Π΄Π²ΡƒΡ….

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого Ρ‚ΠΈΠΏΠ° прСдставлСния Π² Ρ‚Π΅Ρ… ΠΆΠ΅ 8 Π±ΠΈΡ‚Π°Ρ… ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ способ прСдставлСния Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° чисСл ΠΎΡ‚ -128 Π΄ΠΎ 127 .Π­Ρ‚ΠΎ прСдставлСниС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ называСтся Π±Π°ΠΉΡ‚ΠΎΠΌ со Π·Π½Π°ΠΊΠΎΠΌ , , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Ρ‚ΠΈΠΏ Π±Π°ΠΉΡ‚ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прСдставлСния числа.

ΠŸΡ€ΠΈ сравнСнии Π±Π°ΠΉΡ‚Π° Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΈ Π±Π°ΠΉΡ‚Π° со Π·Π½Π°ΠΊΠΎΠΌ ΠΈΡ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹:

  Π±Π°ΠΉΡ‚ Π±Π΅Π· Π·Π½Π°ΠΊΠ°: 0-255
подписанный Π±Π°ΠΉΡ‚: -128 - 127
  

Однако ΠΎΠ½ΠΈ ΠΎΠ±Π° ΠΈΠΌΠ΅ΡŽΡ‚ 256 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ. Они ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ.Π­Ρ‚ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΎ Π΄ΠΎ Ρ‚ΠΈΠΏΠΎΠ² int , long , float , double . ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π±ΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, различаСтся. НапримСр:

  int: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ <- 16 Π±ΠΈΡ‚
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ <- 32 Π±ΠΈΡ‚Π°
  

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ЀактичСскоС количСство Π±ΠΈΡ‚ΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ int ΠΈ long , ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, поэтому привСдСнная Π²Ρ‹ΡˆΠ΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ соотвСтствуСт Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.16 ΠΈΠ»ΠΈ 65536 ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π±Π°ΠΉΡ‚ , Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅:

  Ρ†Π΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ°: 0 - 65535
подписанноС Ρ†Π΅Π»ΠΎΠ΅ число: -32768 - 32767
  

(ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, int Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌ.)

Π’ΠΈΠΏΡ‹ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ float ΠΈ double , Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСны Π±ΠΈΡ‚Π°ΠΌΠΈ Π² памяти, Π½ΠΎ ΠΈΡ… прСдставлСниС Π΄Π°Π½Π½Ρ‹Ρ… отличаСтся ΠΎΡ‚ цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ byte ΠΈ int Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² памяти ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π΄Ρ€ΠΎΠ±ΠΈ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.Π’ΠΈΠΏΡ‹ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ понятиС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ².

Для получСния Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ значСния с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π² соврСмСнных систСмах, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎ стандартС IEEE-754.

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

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

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

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

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

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

подписанный int
ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ Π‘ΠΈΠ½ΠΎΠ½ΠΈΠΌΡ‹ ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ
Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ int

ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ int, подписанный ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ, подписанный ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ int
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ int, подписанный Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ, подписанный Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ int
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ int, signed long long, signed long long int Доступно с C99

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

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

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

ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ со Π·Π½Π°ΠΊΠΎΠΌ ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ Π±Π΅Π· Π·Π½Π°ΠΊΠ°
char unsigned char
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:

901 35 2 Π±Π°ΠΉΡ‚Π°

903

Π’ΠΈΠΏ Π Π°Π·ΠΌΠ΅Ρ€ памяти МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
char 1 Π±Π°ΠΉΡ‚-128 127
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ символ 1 Π±Π°ΠΉΡ‚ 0 255
со знаком
со знаком

127
int 2 Π±Π°ΠΉΡ‚Π° ΠΈΠ»ΠΈ 4 Π±Π°ΠΉΡ‚Π° -32,768 ΠΈΠ»ΠΈ -2,147,483,648 32,767 ΠΈΠ»ΠΈ 2,147,483,647
int Π±Π΅Π· Π·Π½Π°ΠΊΠ° 65131
2 Π±Π°ΠΉΡ‚Π° ΠΈΠ»ΠΈ 4 Π±Π°ΠΉΡ‚Π°

ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ 2 Π±Π°ΠΉΡ‚Π°-32,768 32,767
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ 0 65,535
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 4 Π±Π°ΠΉΡ‚Π° -2 147 483 648 2 147 483 647
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 4,25 4,25 4,2 95 8 Π±Π°ΠΉΡ‚ -9,223,372,036, 854,775,808 9,223,372,036, 854,775,807
Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ 8 Π±Π°ΠΉΡ‚ΠΎΠ² 0 181460744673 цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 18,446,744,673 Π»ΠΈΠΌΠΈΡ‚ΠΎΠ².h Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» . Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° содСрТит макросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, INT_MIN , INT_MAX для минимального ΠΈ максимального Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ†Π΅Π»ΠΎΠ³ΠΎ числа.

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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 bytes \ 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 () для получСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² Π² вашСй систСмС.

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

INT08-C. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ всС Ρ†Π΅Π»Ρ‹Π΅ значСния находятся Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ - стандарт кодирования SEI CERT C

ЦСлочислСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ цСлочислСнному Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ цСлочислСнного Ρ‚ΠΈΠΏΠ° (Ρ‚. Π•. Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ совпадаСт с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†Π΅Π»Ρ‹Ρ… чисСл с Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ). Часто Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π² зависимости ΠΎΡ‚ использования цСлочислСнного значСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² качСствС индСкса.ЦСлочислСнныС значСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Π·ΠΎΡ€Π° ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ статичСского Π°Π½Π°Π»ΠΈΠ·Π°.

ЦСлочислСнноС ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ - это Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, поэтому скомпилированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π² Ρ‚ΠΎΠΌ числС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Β«Π˜Π³Ρ€Ρƒ ΠΆΠΈΠ·Π½ΠΈΒ». ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, компилятор ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΡƒΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ привСсти ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ if, Ссли ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π‘ΠΌ. MSC15-C. НС ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ повСдСния.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° часто ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΊΠ°ΠΊ состояния ошибки, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° этих ошибок Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»Π°, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎΡ‚ΠΊΠ°Π·Π° Π² обслуТивании Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… прилоТСниях. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся ΠΎΡ‚ΠΊΠ°Π· пусковой установки Ariane 5, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» ΠΈΠ·-Π·Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ ошибки прСобразования, которая ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ процСссора [Lions 1996].

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

Алгоритмы насыщСния ΠΈ modwrap, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ использования ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π°Ρ…, Π΄Π°ΡŽΡ‚ цСлочислСнныС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всСгда находятся Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. Π­Ρ‚ΠΎΡ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ находится ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами MIN ΠΈ MAX (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ), Π³Π΄Π΅ MIN ΠΈ MAX - Π΄Π²Π° прСдставимых Ρ†Π΅Π»Ρ‹Ρ… числа с MIN .

Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° насыщСния

Для сСмантики насыщСния ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ матСматичСским Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вычислСния являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ .ЀактичСски Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ матСматичСского Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

MAX <Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

MAX

MIN <= Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ <= MAX

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

MIN

Semant

ics Mod Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° modwrap (Ρ‚Π°ΠΊΠΆΠ΅ называСмая Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΎΠΉ

ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ), цСлочислСнныС значСния Β«ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡΒ»."Π’ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ 1 ΠΊ MAX Π΄Π°Π΅Ρ‚ MIN . Π­Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для Ρ†Π΅Π»Ρ‹Ρ… чисСл Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π² Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π΅ C, ΠΏΠΎΠ΄ΠΏΡƒΠ½ΠΊΡ‚ 6.2.5, ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„ 9. Π­Ρ‚ΠΎ часто Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»Ρ‹Ρ… чисСл со Π·Π½Π°ΠΊΠΎΠΌ. Однако, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… прилоТСниях Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСмантику насыщСния вмСсто сСмантики modwrap. НапримСр, ΠΏΡ€ΠΈ вычислСнии Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (с использованиСм Ρ†Π΅Π»Ρ‹Ρ… чисСл Π±Π΅Π· Π·Π½Π°ΠΊΠ°) часто Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€ оставался Π½Π° максимальном Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Π² случаС пСрСполнСния, Π° Π½Π΅ Ρ‡Π΅ΠΌ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ малСнькой Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ.

ИспользованиС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ пСрСполнСния Ρ†Π΅Π»Ρ‹Ρ… чисСл - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Ρ†Π΅Π»Ρ‹Ρ… чисСл со Π·Π½Π°ΠΊΠΎΠΌ. НапримСр, ΠΏΡ€ΠΈ использовании int ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ [ INT_MIN / 2 , INT_MAX / 2 ]. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ эта ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π±Ρ‹Π»Π° ΡƒΠ»ΠΎΠ²ΠΊΠΎΠΉ Π² ​​ЀортранС, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ компиляторы C стали Π±ΠΎΠ»Π΅Π΅ слоТными, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π² C.

РассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ вычитания. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ a - b , Π³Π΄Π΅ a ΠΈ b находятся Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [INT_MIN / 2, INT_MAX / 2] , Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (INT_MIN, INT_MAX] для Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ Π΄Π²ΡƒΡ….

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ a , часто происходит нСявноС Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅. На машинС Π±Π΅Π· ΠΊΠΎΠ΄ΠΎΠ² условий компилятор ΠΌΠΎΠΆΠ΅Ρ‚ просто Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ вычитания ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ компилятору Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ пСрСполнСния Π½Π΅Ρ‚. Если всС явно созданныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ значСния ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [INT_MIN / 2, INT_MAX / 2] , Ρ‚ΠΎ сравнСния всСгда Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π΄Π°ΠΆΠ΅ Ссли компилятор Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ эту ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° Ρ‚Π°ΠΊΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°

Π’ этом Π½Π΅ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ i + 1 Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° 16-Π±ΠΈΡ‚Π½ΠΎΠΉ машинС. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ C допускаСт ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»Ρ‹Ρ… чисСл со Π·Π½Π°ΠΊΠΎΠΌ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этим для создания Π±ΠΎΠ»Π΅Π΅ быстрого ΠΊΠΎΠ΄Π°, прСдполагая, Ρ‡Ρ‚ΠΎ пСрСполнСния Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if , ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° пСрСполнСния, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½.

 int i = / * Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 32767 * /;
/ *... * /
Ссли (я + 1 <= я) {
  / * ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пСрСполнСния * /
}
/ * Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ i + 1 * /
 

БовмСстимоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅

ИспользованиС Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ вмСсто int Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ соотвСтствуСт вычислСнному Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ:

 long i = / * Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 32767 * /;
/ * ... * /
/ * ВСст Π½Π΅ трСбуСтся; i извСстно, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ пСрСполняСтся * /
/ * Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ i + 1 * /
 

ΠžΡ†Π΅Π½ΠΊΠ° рисков

ЦСлочислСнныС значСния Π²Π½Π΅ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Ρ‡Ρ‚Π΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ записи Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ области памяти ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

РСкомСндация

Π‘Π΅Ρ€ΡŒΠ΅Π·Π½ΠΎΡΡ‚ΡŒ

Π’Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ

Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ восстановлСния

9013 9013 Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°

Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ

ВСроятный

Высокий

P4

L3

9

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ автоматичСского обнаруТСния

ВСрсия

Checker

ОписаниС

AstrΓ©e

20.10

цСлочислСнноС ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ
Axivion Bauhaus Suite CertC-INT08
9014IZ

0

9147 914IZ

40. ADDOFLOW

ALLOC.SIZE.IOFLOW

ALLOC.SIZE.MULOFLOW

ALLOC.SIZE.SUBUFLOW

MISC.MEM.SIZE.ADDOFLOW

MISC.MEM.SIZE.BAD

MISC.MEM.SIZE.MULOFLOW

MISC.MEM.SIZE.SUBUFLOW

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСполнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° выдСлСния

ЦСлочислСнноС ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° выдСлСния

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ пСрСмноТСния Π Π°Π·ΠΌΠ΅Ρ€

Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° распрСдСлСния

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСполнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

АргумСнт нСобоснованного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ умноТСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

Компас / ROSE

ΠœΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ этой Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚Π΅ΠΌ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ любого выраТСния сравнСния, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ.НапримСр, вмСсто сравнСния a + b (Π³Π΄Π΅ b ΠΈ c - константы Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции) ΠΈ b> c , ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ a . (ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ a , b , c ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ int s. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ b являСтся ΠΌΠ°Π»Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π° c являСтся Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ INT_MAX .)

Helix QAC

C2800, C2801, C2802, C2803, C2910, C2911, C2912, C2913

Набор инструмСнтов LDRA

9.7.1

488 S, 493 S, 493 S

Частично Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ

ВСст Parasoft C / C ++ CERT_C-INT08-a

Ρ†Π΅Π»ΠΎΠ΅ число Avoid15

PC-lint Plus

648, 650, 679, 680, 776,
952, 2704

Частично поддСрТиваСтся

Polyspace Bug Finder 914.INT08-C ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ цСлочислСнноС ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ цСлочислСнноС ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ константы (рСкомСндация ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚Π°)
PRQA QA-C

9.7

2800,2801,2802,2803,

2910, 2911,2912,2913

Частично Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ

БвязанныС уязвимости

НайдитС уязвимости, возникшиС Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ этого ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π½Π° Π²Π΅Π±-сайтС CERT.

Библиография


Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² 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:

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

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

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

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

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

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

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

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

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

ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Руководства ΠΏΠΎ Java β„’> Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ языка Java> ΠžΡΠ½ΠΎΠ²Ρ‹ языка)

Π―Π·Ρ‹ΠΊ программирования Java являСтся статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ сначала ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ:

Π­Ρ‚ΠΎ сообщаСт вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«ΡˆΠ΅ΡΡ‚Π΅Ρ€Π½ΡΒ» сущСствуСт, содСрТит числовыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«1Β».Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ опрСдСляСт значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с Π½Π΅ΠΉ. Помимо int , язык программирования Java ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΅Ρ‰Π΅ сСмь Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… . ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ языком ΠΈ Π½Π°Π·Π²Π°Π½ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом. ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ значСния Π½Π΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ состояниС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ значСниями. Π―Π·Ρ‹ΠΊ программирования Java ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ восСмь ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…:

  • Π±Π°ΠΉΡ‚ : Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ являСтся 8-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ числом с Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ Π΄Π²ΡƒΡ… со Π·Π½Π°ΠΊΠΎΠΌ.Он ΠΈΠΌΠ΅Π΅Ρ‚ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -128 ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 127 (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ). Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для экономии памяти Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ….
    массивы, Π³Π΄Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½Π° экономия памяти. Π˜Ρ… Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто int , Π³Π΄Π΅ ΠΈΡ… ограничСния ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ ваш ΠΊΠΎΠ΄; Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

  • short : Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… short прСдставляСт собой 16-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число со Π·Π½Π°ΠΊΠΎΠΌ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.Он ΠΈΠΌΠ΅Π΅Ρ‚ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -32 768 ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 32 767 (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ). Как ΠΈ Π² случаС с Π±Π°ΠΉΡ‚ΠΎΠΌ , ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ для экономии памяти Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивах Π² ситуациях, ΠΊΠΎΠ³Π΄Π° экономия памяти Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

  • int : ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… int прСдставляСт собой 32-Π±ΠΈΡ‚Π½ΠΎΠ΅ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число с Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ Π΄Π²ΡƒΡ…, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -2 31 ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2 31 -1. Π’ Java SE 8 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсиях Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… int для прСдставлСния 32-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2 32 -1.Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ класс Integer, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… int ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ°. Π‘ΠΌ. Π Π°Π·Π΄Π΅Π» «ЧисловыС классы» для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ compareUnsigned , diverUnsigned ΠΈ Ρ‚. Π”., Π‘Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π²
    Integer Класс для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами Π±Π΅Π· Π·Π½Π°ΠΊΠ°.

  • long : Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… long - это 64-Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число с Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ Π΄Π²ΡƒΡ…. Π”Π»ΠΈΠ½Π½ΠΎΠ΅ число со Π·Π½Π°ΠΊΠΎΠΌ ΠΈΠΌΠ΅Π΅Ρ‚ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -2 63 ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2 63 -1.Π’ Java SE 8 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсиях Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… long для прСдставлСния Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ 64-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° long, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2 64 -1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Π΅ΠΌ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдоставляСт int . Π’
    Long Класс Ρ‚Π°ΠΊΠΆΠ΅ содСрТит Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠ°ΠΊ compareUnsigned , DivideUnsigned ΠΈ Ρ‚. Π”. Для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π±Π΅Π· Π·Π½Π°ΠΊΠ°.

  • с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой : Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой прСдставляСт собой 32-Π±ΠΈΡ‚Π½ΠΎΠ΅ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ точности IEEE 754.Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ обсуТдСния, Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ Π²
    Π Π°Π·Π΄Π΅Π» Β«Π’ΠΈΠΏΡ‹, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΈ значСния с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой» Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ языка Java. Как ΠΈ Π² случаС с рСкомСндациями для Π±Π°ΠΉΡ‚ ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой (вмСсто double ), Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивах чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²Π°Π»ΡŽΡ‚Π°. Для этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
    java.math.BigDecimal вмСсто этого.Numbers and Strings ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ BigDecimal, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ классы, прСдоставляСмыС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Java.

  • double : Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… double являСтся 64-Π±ΠΈΡ‚Π½Ρ‹ΠΌ IEEE 754 с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ обсуТдСния, Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ Π²
    Π Π°Π·Π΄Π΅Π» Β«Π’ΠΈΠΏΡ‹, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΈ значСния с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой» Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ языка Java. Для дСсятичных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ этот Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выбираСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, этот Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²Π°Π»ΡŽΡ‚Π°.

  • boolean : Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… boolean ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… значСния: true ΠΈ false . Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для простых Ρ„Π»Π°Π³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ истинныС / Π»ΠΎΠΆΠ½Ρ‹Π΅ условия. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… прСдставляСт ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½ΠΎ Π΅Π³ΠΎ Β«Ρ€Π°Π·ΠΌΠ΅Ρ€Β» Π½Π΅ совсСм Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½.

  • char : Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… char - это ΠΎΠ΄ΠΈΠ½ 16-Π±ΠΈΡ‚Π½Ρ‹ΠΉ символ Unicode. Он ΠΈΠΌΠ΅Π΅Ρ‚ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ '\ u0000' (ΠΈΠ»ΠΈ 0) ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ '\ uffff' (ΠΈΠ»ΠΈ 65 535 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ).

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ восьми ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, пСрСчислСнным Π²Ρ‹ΡˆΠ΅, язык программирования Java Ρ‚Π°ΠΊΠΆΠ΅ обСспСчиваСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строк Ρ‡Π΅Ρ€Π΅Π·
java.lang.String класс. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ строки символов Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ автоматичСски создаст Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ String ; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, String s = "это строка"; . String ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСизмСняСмыми , Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ послС создания ΠΈΡ… значСния Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹. Класс String тСхничСски Π½Π΅ являСтся ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ, учитывая ΠΎΡΠΎΠ±ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ Π΅ΠΌΡƒ языком, Π²Ρ‹, вСроятно, Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Π½Π΅ΠΌ ΠΊΠ°ΠΊ ΠΎ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΌ.Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ большС ΠΎ классС String Π²
ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

ЗначСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

НС всСгда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ объявлСнии поля. Поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹, Π½ΠΎ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Π±ΡƒΠ΄ΡƒΡ‚ установлСны компилятором Π² Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ ΠΈΠ»ΠΈ null , Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. Однако использованиС Ρ‚Π°ΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ считаСтся ΠΏΠ»ΠΎΡ…ΠΈΠΌ стилСм программирования.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (для ΠΏΠΎΠ»Π΅ΠΉ)
Π±Π°ΠΉΡ‚ 0
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ 0
Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ 0
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ 0L
ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ 0,0f
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ 0,0d
символ '\ u0000'
Π‘Ρ‚Ρ€ΠΎΠΊΠ° (ΠΈΠ»ΠΈ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚) null
логичСский лоТь

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ; компилятор Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ присваиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.Если Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свою Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΎΠ½Π° объявлСна, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅. Доступ ΠΊ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции.

Π›ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹

Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово new Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ - это особыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, встроСнныС Π² язык; ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, созданныС ΠΈΠ· класса. Π›ΠΈΡ‚Π΅Ρ€Π°Π» - это прСдставлСниС исходного ΠΊΠΎΠ΄Π° фиксированного значСния; Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ прСдставлСны нСпосрСдствСнно Π² вашСм ΠΊΠΎΠ΄Π΅, Π½Π΅ трСбуя вычислСний.Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°:

логичСский Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = истина;
char capitalC = 'C';
Π±Π°ΠΉΡ‚ b = 100;
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ s = 10000;
int i = 100000;
 
ЦСлочислСнныС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹

ЦСлочислСнный Π»ΠΈΡ‚Π΅Ρ€Π°Π» ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π»ΠΈΠ½ΠΎΠΉ , Ссли ΠΎΠ½ заканчиваСтся Π±ΡƒΠΊΠ²ΠΎΠΉ L ΠΈΠ»ΠΈ l ; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС это Ρ‚ΠΈΠΏ int . РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΏΠΈΡΠ½ΡƒΡŽ Π±ΡƒΠΊΠ²Ρƒ L , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΡ‚Ρ€ΠΎΡ‡Π½ΡƒΡŽ Π±ΡƒΠΊΠ²Ρƒ l Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ Ρ†ΠΈΡ„Ρ€Ρ‹ 1 .

ЗначСния цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² byte , short , int ΠΈ long ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы ΠΈΠ· int Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ². ЗначСния Ρ‚ΠΈΠΏΠ° long , выходящиС Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° int , ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы ΠΈΠ· long Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ². ЦСлочислСнныС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих систСм счислСния:

  • ДСсятичный: ОснованиС 10, Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ состоят ΠΈΠ· чисСл ΠΎΡ‚ 0 Π΄ΠΎ 9; это систСма счислСния, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь
  • ШСстнадцатСричный: основаниС 16, Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ состоят ΠΈΠ· Ρ†ΠΈΡ„Ρ€ ΠΎΡ‚ 0 Π΄ΠΎ 9 ΠΈ Π±ΡƒΠΊΠ² ΠΎΡ‚ A Π΄ΠΎ F
  • Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ: Π‘Π°Π·Π° 2, Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ состоят ΠΈΠ· чисСл 0 ΠΈ 1 (Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Π² Java SE 7 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсиях)

Для ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования дСсятичная систСма, вСроятно, Π±ΡƒΠ΄Π΅Ρ‚ СдинствСнной систСмой счислСния, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.Однако, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ систСму счислСния, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ синтаксис. ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ 0x ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ, Π° 0b ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ:

// Число 26 Π² дСсятичном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅
int decVal = 26;
// Число 26 Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅
int hexVal = 0x1a;
// Число 26 Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅
int binVal = 0b11010;
 
Π›ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой

Π›ΠΈΡ‚Π΅Ρ€Π°Π» с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ float , Ссли ΠΎΠ½ заканчиваСтся Π±ΡƒΠΊΠ²ΠΎΠΉ F ΠΈΠ»ΠΈ f ; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π΅Π³ΠΎ Ρ‚ΠΈΠΏ - double ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π±ΡƒΠΊΠ²ΠΎΠΉ D ΠΈΠ»ΠΈ d .

Π’ΠΈΠΏΡ‹ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ( float ΠΈ double ) Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ E ΠΈΠ»ΠΈ e (для ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ записи), F ΠΈΠ»ΠΈ f (32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π» с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой) ΠΈ D ΠΈΠ»ΠΈ d (64-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π»; это являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΠΏΠΎ соглашСнию опускаСтся).

Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ d1 = 123,4;
// Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ d1, Π½ΠΎ Π² ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ прСдставлСнии
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ d2 = 1.234e2;
float f1 = 123.4f;
 
Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹

Π›ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² char ΠΈ String ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ символы Unicode (UTF-16).Если ваш Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ файловая систСма ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ это, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ символы нСпосрСдствСнно Π² своСм ΠΊΠΎΠ΄Π΅. Если Π½Π΅Ρ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ UnicodeΒ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ '\ u0108' (заглавная C с циркумфлСксом) ΠΈΠ»ΠΈ Β«S = Se \ u00F1orΒ» (SΓ­ SeΓ±or Π½Π° испанском языкС). ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Β«ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈΒ» для ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² ΠΈ Β«Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈΒ» для строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² . Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Unicode ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΏΠΎΠ»Π΅ΠΉ), Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°Ρ… char ΠΈΠ»ΠΈ String .

Π―Π·Ρ‹ΠΊ программирования Java Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ для Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² char ΠΈ String : \ b (backspace), \ t (tab), \ n (ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки), \ f (ΠΏΠΎΠ΄Π°Ρ‡Π° страницы), \ r (Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ), \ " (двойная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°), \ ' (одинарная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°) ΠΈ \ (обратная косая Ρ‡Π΅Ρ€Ρ‚Π°).

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π» null , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для любого ссылочного Ρ‚ΠΈΠΏΠ°. null ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСно любой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Π’Ρ‹ ΠΌΠ°Π»ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ null , ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΅Π³ΠΎ наличия. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, null часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π² качСствС ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ нСдоступСн.

НаконСц, сущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ особый Π²ΠΈΠ΄ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ класса , ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚Π΅ΠΌ взятия ΠΈΠΌΠ΅Π½ΠΈ Ρ‚ΠΈΠΏΠ° ΠΈ добавлСния Β« .classΒ» ; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ String.class .Π­Ρ‚ΠΎ относится ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ (Ρ‚ΠΈΠΏΠ° , класс ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт сам Ρ‚ΠΈΠΏ.

ИспользованиС символов подчСркивания Π² числовых Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°Ρ…

Π’ Java SE 7 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсиях любоС количСство символов подчСркивания ( _ ) ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ Π² числовом Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π΅. Π­Ρ‚Π° функция позволяСт Π²Π°ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. для раздСлСния Π³Ρ€ΡƒΠΏΠΏ Ρ†ΠΈΡ„Ρ€ Π² числовых Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°Ρ…, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ вашСго ΠΊΠΎΠ΄Π°.

НапримСр, Ссли ваш ΠΊΠΎΠ΄ содСрТит числа с большим количСством Ρ†ΠΈΡ„Ρ€, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ символ подчСркивания для раздСлСния Ρ†ΠΈΡ„Ρ€ Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎ Ρ‚Ρ€ΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Π²Ρ‹ использовали Π±Ρ‹ Π·Π½Π°ΠΊ прСпинания, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ запятая, ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π», Π² качСствС раздСлитСля.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы использования символа подчСркивания Π² числовых Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°Ρ…:

long creditCardNumber = 1234_5678_9012_3456L;
long socialSecurityNumber = 999_99_9999L;
float pi = 3.14_15F;
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ hexBytes = 0xFF_EC_DE_5E;
Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ слова = 0xCAFE_BABE;
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ maxLong = 0x7fff_ffff_ffff_ffffL;
byte nybbles = 0b0010_0101;
Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹ = 0b11010010_01101001_10010100_10010010;
 

Π—Π½Π°ΠΊΠΈ подчСркивания ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ; нСльзя ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ подчСркивания Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… мСстах:

  • Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ†Π΅ числа
  • Рядом с дСсятичной запятой Π² Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой
  • Π”ΠΎ F ΠΈΠ»ΠΈ L суффикс
  • Π’ позициях, Π³Π΄Π΅ оТидаСтся строка Ρ†ΠΈΡ„Ρ€

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ допустимыС ΠΈ нСдопустимыС размСщСния подчСркивания (Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅) Π² числовых Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°Ρ…:

//  ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: нСльзя ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ символы подчСркивания 
//  рядом с дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ 
ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ pi1 = 3_.1415F;
//  ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: нСльзя ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ символы подчСркивания 
//  рядом с дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ 
float pi2 = 3._1415F;
//  ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: нСльзя ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ символы подчСркивания 
//  ΠΏΠ΅Ρ€Π΅Π΄ суффиксом L 
long socialSecurityNumber1 = 999_99_9999_L;

// ОК (дСсятичный Π»ΠΈΡ‚Π΅Ρ€Π°Π»)
ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» x1 = 5_2;
//  ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: нСльзя ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ символы подчСркивания 
//  Π’ ΠΊΠΎΠ½Ρ†Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° 
int x2 = 52_;
// ОК (дСсятичный Π»ΠΈΡ‚Π΅Ρ€Π°Π»)
int x3 = 5_______2;

//  ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: нСльзя ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ символы подчСркивания 
//  Π² прСфиксС систСмы счислСния 0x 
int x4 = 0_x52;
//  ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: нСльзя ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ символы подчСркивания 
//  Π² Π½Π°Ρ‡Π°Π»Π΅ числа 
int x5 = 0x_52;
// ОК (ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π»)
int x6 = 0x5_2;
//  ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: нСльзя ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ символы подчСркивания 
//  Π² ΠΊΠΎΠ½Ρ†Π΅ числа 
int x7 = 0x52_;
 

4.5 - Π¦Π΅Π»Ρ‹Π΅ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΡ… слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ

АлСкс, 23 апрСля 2019 Π³. | послСднСС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ nascardriver 20 фСвраля 2021 Π³.

Π¦Π΅Π»Ρ‹Π΅ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ°

На ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ (4.4 - Π¦Π΅Π»Ρ‹Π΅ числа со Π·Π½Π°ΠΊΠΎΠΌ) ΠΌΡ‹ рассмотрСли Ρ†Π΅Π»Ρ‹Π΅ числа со Π·Π½Π°ΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π½Π°Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 0.

C ++ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ†Π΅Π»Ρ‹Π΅ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ°. Π‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа - это Ρ†Π΅Π»Ρ‹Π΅ числа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»Ρ‹Ρ… чисСл Π±Π΅Π· Π·Π½Π°ΠΊΠ°

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ°, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Π±Π΅Π· Π·Π½Π°ΠΊΠ° .По соглашСнию это помСщаСтся ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΈΠΏΠΎΠΌ:

Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Π½Π°ΠΌ;

Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ int ui;

бСззнаковая длинная ul;

Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ull;

ЦСлочислСнный Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π±Π΅Π· Π·Π½Π°ΠΊΠ°

1-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ 0 Π΄ΠΎ 255. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ это с Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ 1-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа со Π·Π½Π°ΠΊΠΎΠΌ ΠΎΡ‚ -128 Π΄ΠΎ 127. Оба ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 256 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½ΠΎ Ρ†Π΅Π»Ρ‹Π΅ числа со Π·Π½Π°ΠΊΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ своСго Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Ρ†Π΅Π»Ρ‹Π΅ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π΄Π²Π° Ρ€Π°Π·Π° большС.

Π’ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ для Ρ†Π΅Π»Ρ‹Ρ… чисСл Π±Π΅Π· Π·Π½Π°ΠΊΠ°:

Π Π°Π·ΠΌΠ΅Ρ€ / Ρ‚ΠΈΠΏ Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
1 Π±Π°ΠΉΡ‚ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΎΡ‚ 0 Π΄ΠΎ 255
2 Π±Π°ΠΉΡ‚Π° Π±Π΅Π· Π·Π½Π°ΠΊΠ° 0 Π΄ΠΎ 65 535
4 Π±Π°ΠΉΡ‚Π° Π±Π΅Π· Π·Π½Π°ΠΊΠ° 0 Π΄ΠΎ 4 294 967 295
8 Π±Π°ΠΉΡ‚ Π±Π΅Π· Π·Π½Π°ΠΊΠ° 0 Π΄ΠΎ 18 446 744 073 709 551 615

n-битовая пСрСмСнная Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ 0 Π΄ΠΎ (2 n ) -1.

Если ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ, Ρ†Π΅Π»Ρ‹Π΅ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ° Ρ…ΠΎΡ€ΠΎΡˆΠΎ подходят для сСтСй ΠΈ систСм с нСбольшим объСмом памяти, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†Π΅Π»Ρ‹Π΅ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ большС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл, Π½Π΅ занимая Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ памяти.

Π—Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ условий подписанный ΠΈ нСподписанный

НовыС программисты ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡƒΡ‚Π°ΡŽΡ‚ подписанныС ΠΈ нСподписанныС. Π’ΠΎΡ‚ простой способ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ: Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа ΠΎΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π½Π°ΠΊ. Если Π·Π½Π°ΠΊ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ число ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅.Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ†Π΅Π»ΠΎΠ΅ число со Π·Π½Π°ΠΊΠΎΠΌ (Ρ†Π΅Π»ΠΎΠ΅ число со Π·Π½Π°ΠΊΠΎΠΌ) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ. Π¦Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ° (Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ°) ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС значСния ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹.

ЦСлочислСнноС Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ попытаСмся ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ число 280 (для прСдставлСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ трСбуСтся 9 Π±ΠΈΡ‚) Π² 1-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΌ (8-Π±ΠΈΡ‚Π½ΠΎΠΌ) Ρ†Π΅Π»ΠΎΠΌ числС Π±Π΅Π· Π·Π½Π°ΠΊΠ°? ΠžΡ‚Π²Π΅Ρ‚ - ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

Как Π½ΠΈ странно, Π² стандартС C ++ прямо говорится, Ρ‡Ρ‚ΠΎ «вычислСниС с использованиСм Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡΒ».Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ мнСнию программистов ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ цСлочислСнноС ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ подписанныС, Ρ‚Π°ΠΊ ΠΈ нСподписанныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования. Учитывая, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ программистов рассмотрСло Π±Ρ‹ это ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ, нСсмотря Π½Π° утвСрТдСния C ++ ΠΎΠ± ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ.

Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΠΎΠ½ΠΎ дСлится Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΡƒΡŽ наибольшСС число Ρ‚ΠΈΠΏΠ°, ΠΈ сохраняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ остаток.

Число 280 слишком Π²Π΅Π»ΠΈΠΊΠΎ для нашСго 1-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ‚ 0 Π΄ΠΎ 255. На 1 большС наибольшСго числа Ρ‚ΠΈΠΏΠ° 256.Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ Π΄Π΅Π»ΠΈΠΌ 280 Π½Π° 256, получая 1 остаток 24. ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ 24 - это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сохраняСтся.

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ ΠΆΠ΅. Π›ΡŽΠ±ΠΎΠ΅ число, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰Π΅Π΅ наибольшСС число, прСдставлСнноС Ρ‚ΠΈΠΏΠΎΠΌ, просто «оборачиваСтся» (ΠΈΠ½ΠΎΠ³Π΄Π° это называСтся Β«ΠΎΠ±Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽΒ» ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ нСясно, Β«Π½Π°ΡΡ‹Ρ‰Π΅Π½Π½ΠΎΡΡ‚ΡŒΒ»). 255 находится Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 1-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа, поэтому 255 ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚. 256, ΠΎΠ΄Π½Π°ΠΊΠΎ, находится Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, поэтому ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ 0. 257 ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ 1. 280 ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ 24.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° это, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ 2-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа:

#include

int main ()

{

Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ x {65535}; // максимальноС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ 16-Π±ΠΈΡ‚Π½ΠΎΠ΅ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

std :: cout << "x was:" << x << '\ n';

Ρ… = 65536; // 65536 находится Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ нашСго Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, поэтому ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±Ρ‚Π΅ΠΊΠ°Π½ΠΈΠ΅

std :: cout << "x is now:" << x << '\ n';

Ρ… = 65537; // 65537 находится Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ нашСго Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, поэтому ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±Ρ‚Π΅ΠΊΠ°Π½ΠΈΠ΅

std :: cout << "x is now:" << x << '\ n';

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

}

Как Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?

 x Π±Ρ‹Π»ΠΎ: 65535
x сСйчас: 0
x сСйчас: 1
 

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ сторону.0 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ 2-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. -1 Π½Π΅ являСтся прСдставимым, поэтому ΠΎΠ½ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π΄ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, производя Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 65535. -2 оборачиваСтся Π΄ΠΎ 65534. И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

#include

int main ()

{

Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ x {0}; // наимСньшСС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ 2-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ°

std :: cout << "x was:" << x << '\ n';

Ρ… = -1; // -1 Π²Π½Π΅ нашСго Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, поэтому ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±Ρ‚Π΅ΠΊΠ°Π½ΠΈΠ΅

std :: cout << "x is now:" << x << '\ n';

Ρ… = -2; // -2 Π²Π½Π΅ нашСго Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, поэтому ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±Ρ‚Π΅ΠΊΠ°Π½ΠΈΠ΅

std :: cout << "x is now:" << x << '\ n';

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

}

 x Π±Ρ‹Π»ΠΎ: 0
x сСйчас: 65535
x сСйчас: 65534
 

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… компиляторах, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ компилятор ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ цСлочислСнный Π»ΠΈΡ‚Π΅Ρ€Π°Π» Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.Если Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ прСдупрСТдСния ΠΊΠ°ΠΊ ошибки».

МногиС Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ ошибки Π² истории Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ΠΈΠ·-Π·Π° повСдСния цикличСского ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° с Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. Π’ Π°Ρ€ΠΊΠ°Π΄Π½ΠΎΠΉ ΠΈΠ³Ρ€Π΅ Donkey Kong Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Ρ‹ΡˆΠ΅ 22 ΠΈΠ·-Π·Π° ошибки пСрСполнСния, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ нСдостаточно бонусного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ уровня.

Π’ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΈΠ³Ρ€Π΅ Civilization Π“Π°Π½Π΄ΠΈ Π±Ρ‹Π» извСстСн Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ часто Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ» ядСрноС ΠΎΡ€ΡƒΠΆΠΈΠ΅, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ Π΅Π³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ пассивности.Π˜Π³Ρ€ΠΎΠΊΠΈ ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ это Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ агрСссии Π“Π°Π½Π΄ΠΈ, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ установлСнной Π½Π° 1, Π½ΠΎ Ссли ΠΎΠ½ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ дСмократичСскоС ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ, ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ -2. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ агрСссия прСвысит 255, Ρ‡Ρ‚ΠΎ сдСлаСт Π΅Π³ΠΎ максимально агрСссивным! Однако совсСм Π½Π΅Π΄Π°Π²Π½ΠΎ Π‘ΠΈΠ΄ ΠœΠ΅ΠΉΠ΅Ρ€ (Π°Π²Ρ‚ΠΎΡ€ ΠΈΠ³Ρ€Ρ‹) пояснил, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ это Π½Π΅ Ρ‚Π°ΠΊ.

Π‘ΠΏΠΎΡ€Ρ‹ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ чисСл Π±Π΅Π· Π·Π½Π°ΠΊΠ°

МногиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ (ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Google) ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Ρ… чисСл Π±Π΅Π· Π·Π½Π°ΠΊΠ°.

Π­Ρ‚ΠΎ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни связано с двумя Ρ‚ΠΈΠΏΠ°ΠΌΠΈ повСдСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… чисСл, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ 3 ΠΈ 5. 3 минус 5 Ρ€Π°Π²Π½ΠΎ -2, Π½ΠΎ -2 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСно ΠΊΠ°ΠΊ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ число.

#include

int main ()

{

unsigned int x {3};

Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ° y {5};

std :: cout << x - y << '\ n';

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

}

На машинС Π°Π²Ρ‚ΠΎΡ€Π° эта, казалось Π±Ρ‹, Π½Π΅Π²ΠΈΠ½Π½ΠΎ выглядящая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π­Ρ‚ΠΎ происходит ΠΈΠ·-Π·Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° -2 ΠΊ числу, Π±Π»ΠΈΠ·ΠΊΠΎΠΌΡƒ ΠΊ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌΡƒ ΠΏΡ€Π΅Π΄Π΅Π»Ρƒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° 4-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа.ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ пСрСнос происходит, ΠΊΠΎΠ³Π΄Π° Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° - . Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ этого, ΠΊΠΎΠ³Π΄Π° появятся ΠΏΠ΅Ρ‚Π»ΠΈ.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΡ€ΠΈ смСшивании Ρ†Π΅Π»Ρ‹Ρ… чисСл со Π·Π½Π°ΠΊΠΎΠΌ ΠΈ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² (x ΠΈΠ»ΠΈ y) подписан, Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ (Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ) ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ подписанный Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ°, ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅!

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚:

void doSomething (unsigned int x)

{

// Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ x Ρ€Π°Π·

std :: cout << "x is" << x << '\ n';

}

int main ()

{

doSomething (-1);

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

}

Автор doSomething () ΠΎΠΆΠΈΠ΄Π°Π», Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами.Но звонящий ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ -1 . Π§Ρ‚ΠΎ происходит Π² этом случаС?

АргумСнт со Π·Π½Π°ΠΊΠΎΠΌ -1 нСявно прСобразуСтся Π² Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. -1 Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ числа, поэтому ΠΎΠ½ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π΄ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ большого числа (вСроятно, 4294967295). Π’ΠΎΠ³Π΄Π° ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° становится баллистичСской. Π₯ΡƒΠΆΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ способа ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ это состояниС. C ++ ΠΌΠΎΠΆΠ΅Ρ‚ свободно ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ числа со Π·Π½Π°ΠΊΠΎΠΌ ΠΈ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Π½ΠΎ Π½Π΅ провСряСт Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ пСрСполняСтС свой Ρ‚ΠΈΠΏ.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΡ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто этого ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Оба Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны ΠΏΠΎΠ·ΠΆΠ΅.

НСкоторыС соврСмСнныС языки программирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Java) ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, .NET) Π»ΠΈΠ±ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Π»ΠΈΠ±ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΈΡ… использованиС.

НовыС программисты часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ†Π΅Π»Ρ‹Π΅ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ° для прСдставлСния Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ прСимущСствами Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. Π‘ΡŒΡΡ€Π½ Бтрауструп, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ C ++, сказал: «ИспользованиС Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ вмСсто int для получСния Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π° для прСдставлСния ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ являСтся Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉΒ».

Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ использования чисСл Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ особых случаСв ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

НС ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ больший Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ число со Π·Π½Π°ΠΊΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ†Π΅Π»Ρ‹Ρ… чисСл Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Ρ‹, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ (4.6 - Π¦Π΅Π»Ρ‹Π΅ числа фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ size_t).

Если Π²Ρ‹ всС ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ числа, ΠΏΠΎ возмоТности ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ смСшивания подписанных ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… чисСл.

Π’Π°ΠΊ Π³Π΄Π΅ ΠΆΠ΅ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ числа?

Π’ C ++ всС Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ нСсколько случаСв, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ (ΠΈΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ числа.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ числа ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±ΠΈΡ‚Π°ΠΌΠΈ (рассматриваСтся Π² Π³Π»Π°Π²Π΅ O (это заглавная Π±ΡƒΠΊΠ²Π° Β«ΠΎΒ», Π° Π½Π΅ Β«0Β»).

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях всС Π΅Ρ‰Π΅ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ использованиС Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… чисСл, Π² основном Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ связаны с индСксациСй массивов. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² ΡƒΡ€ΠΎΠΊΠ°Ρ… ΠΏΠΎ массивам ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ массивов.

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ для встроСнной систСмы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Arduino) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ контСкста с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ процСссора / памяти, использованиС чисСл Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π±ΠΎΠ»Π΅Π΅ распространСно ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ (Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ) ΠΏΠΎ сообраТСниям ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

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

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