Π‘Π°ΠΌΡ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² c. Π’ΠΈΠΏΡ‹ char, short, int ΠΈ long

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

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅ΡŽΡ‚ особСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² C#, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°ΡŽΡ‚ΡΡ строгому ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŽ со стороны компилятора Π½Π° соотвСтствиС Ρ‚ΠΈΠΏΠΎΠ², ΠΏΡ€ΠΈΡ‡Π΅ΠΌ нСдопустимыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, строгий ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Ρ‚ΠΈΠΏΠΎΠ² позволяСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ошибки ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Для обСспСчСния контроля Ρ‚ΠΈΠΏΠΎΠ² всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, выраТСния ΠΈ значСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ. Π’Π°ΠΊΠΎΠ³ΠΎ понятия, ΠΊΠ°ΠΊ "бСстиповая" пСрСмСнная, Π² Π΄Π°Π½Π½ΠΎΠΌ языкС программирования Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ сущСствуСт. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚ΠΈΠΏ значСния опрСдСляСт Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π°Π΄ Π½ΠΈΠΌ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Π°Ρ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ нСдопустимой для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ.

Π’ C# ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…: Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ссылочныС Ρ‚ΠΈΠΏΡ‹ . Они ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎ содСрТимому ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ значСния (value type) Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ нСпосрСдствСнно, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ссылочный Ρ‚ΠΈΠΏ (reference type) Ρ…Ρ€Π°Π½ΠΈΡ‚ ссылку Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π­Ρ‚ΠΈ Ρ‚ΠΈΠΏΡ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… мСстах памяти: Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² области, извСстной ΠΊΠ°ΠΊ стСк , Π° ссылочныС Ρ‚ΠΈΠΏΡ‹ - Π² области, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ управляСмой ΠΊΡƒΡ‡Π΅ΠΉ .

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

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

Π’ C# ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π΄Π΅Π²ΡΡ‚ΡŒ цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ²: char, byte, sbyte, short, ushort, int, uint, long ΠΈ ulong . Но Ρ‚ΠΈΠΏ char примСняСтся, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для прСдставлСния символов ΠΈ поэтому рассматриваСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ восСмь цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для числовых расчСтов. НиТС прСдставлСны ΠΈΡ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ прСдставлСния чисСл ΠΈ Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ Π² Π±ΠΈΡ‚Π°Ρ…:

ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ C#
Π’ΠΈΠΏ Π’ΠΈΠΏ CTS Π Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ Π² Π±ΠΈΡ‚Π°Ρ… Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
byte System.Byte 8 0:255
sbyte System.SByte 8 -128:127
short System.Int16 16 -32768: 32767
ushort System.UInt16 16 0: 65535
int System.Int32 32 -2147483648: 2147483647
uint System.UInt32 32 0: 4294967295
long System.Int64 64 -9223372036854775808: 9223372036854775807
ulong System.UInt64 64 0: 18446744073709551615

Как слСдуСт ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π² C# ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΠ±Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ²: со Π·Π½Π°ΠΊΠΎΠΌ ΠΈ Π±Π΅Π· Π·Π½Π°ΠΊΠ°. ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ со Π·Π½Π°ΠΊΠΎΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π±Π΅Π· Π·Π½Π°ΠΊΠ° способом ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ разряда Ρ†Π΅Π»ΠΎΠ³ΠΎ числа. Π’Π°ΠΊ, Ссли Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ со Π·Π½Π°ΠΊΠΎΠΌ, Ρ‚ΠΎ компилятор C# сгСнСрируСт ΠΊΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ разряд Ρ†Π΅Π»ΠΎΠ³ΠΎ числа ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС Ρ„Π»Π°Π³Π° Π·Π½Π°ΠΊΠ°. Число считаСтся ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ссли Ρ„Π»Π°Π³ Π·Π½Π°ΠΊΠ° Ρ€Π°Π²Π΅Π½ 0, ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ссли ΠΎΠ½ Ρ€Π°Π²Π΅Π½ 1.

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

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

Π’Π°ΠΊ, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Ρ‚ΠΎ для Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ uint , для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ со Π·Π½Π°ΠΊΠΎΠΌ - Ρ‚ΠΈΠΏ long , Π° для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π±Π΅Π· Π·Π½Π°ΠΊΠ° - Ρ‚ΠΈΠΏ ulong . Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰Π°Ρ расстояниС ΠΎΡ‚ Π—Π΅ΠΌΠ»ΠΈ Π΄ΠΎ Π‘ΠΎΠ»Π½Ρ†Π° Π² сантимСтрах. Для хранСния ΡΡ‚ΠΎΠ»ΡŒ большого значСния Π² Π½Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ пСрСмСнная Ρ‚ΠΈΠΏΠ° long:

Using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string args) { long result; const long km = 149800000; // расстояниС Π² ΠΊΠΌ. result = km * 1000 * 100; Console.WriteLine(result); Console.ReadLine(); } } }

ВсСм цСлочислСнным ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² дСсятичной ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’ послСднСм случаС трСбуСтся прСфикс 0x:

Long x = 0x12ab;

Если Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ какая-Ρ‚ΠΎ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏ int, uint, long ΠΈΠ»ΠΈ ulong, Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ принимаСтся int. Π§Ρ‚ΠΎΠ±Ρ‹ явно ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ цСлочислСнный Ρ‚ΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊ числу ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ символы:

Uint ui = 1234U; long l = 1234L; ulong ul = 1234UL;

U ΠΈ L ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, хотя ΡΡ‚Ρ€ΠΎΡ‡Π½ΡƒΡŽ L Π»Π΅Π³ΠΊΠΎ Π·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΏΡƒΡ‚Π°Ρ‚ΡŒ с Ρ†ΠΈΡ„Ρ€ΠΎΠΉ 1 (Π΅Π΄ΠΈΠ½ΠΈΡ†Π°).

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

Π’ΠΈΠΏΡ‹ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ числа с Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ. Π’ C# ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π΅ разновидности Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ: float ΠΈ double . Они ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ числовыС значСния с ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ соотвСтствСнно. Π’Π°ΠΊ, Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠ° float составляСт 32 Π±ΠΈΡ‚Π°, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎ соотвСтствуСт Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ прСдставлСния чисСл ΠΎΡ‚ 5E-45 Π΄ΠΎ 3,4E+38. А Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠ° double составляСт 64 Π±ΠΈΡ‚Π°, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎ соотвСтствуСт Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ прСдставлСния чисСл ΠΎΡ‚ 5E-324 Π΄ΠΎ 1,7Π•+308.

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… float ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… трСбуСтся мСньшая Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ. Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… double большС, Ρ‡Π΅ΠΌ float, ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ точности (15 разрядов).

Если нСцСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ТСстко кодируСтся Π² исходном тСкстС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 12.3), Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ компилятор ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ подразумСваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° double. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ float, потрСбуСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ символ F (ΠΈΠ»ΠΈ f):

Float f = 12.3F;

ДСсятичный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…

Для прСдставлСния чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ высокой точности прСдусмотрСн Ρ‚Π°ΠΊΠΆΠ΅ дСсятичный Ρ‚ΠΈΠΏ decimal , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для примСнСния Π² финансовых расчСтах. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ 128 Π±ΠΈΡ‚ для прСдставлСния числовых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚ 1Π•-28 Π΄ΠΎ 7,9Π•+28. Π’Π°ΠΌ, вСроятно, извСстно, Ρ‡Ρ‚ΠΎ для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… арифмСтичСских вычислСний с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ ошибки округлСния дСсятичных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΈ ошибки ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ использовании Ρ‚ΠΈΠΏΠ° decimal, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ числа с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ 28 (Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ 29) дСсятичных разрядов. Благодаря Ρ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ этот Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… способСн ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ дСсятичныС значСния Π±Π΅Π· ошибок округлСния, ΠΎΠ½ особСнно ΡƒΠ΄ΠΎΠ±Π΅Π½ для расчСтов, связанных с финансами:

Using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string args) { // *** РасчСт стоимости капиталовлоТСния с *** // *** фиксированной Π½ΠΎΡ€ΠΌΠΎΠΉ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΠΈ*** decimal money, percent; int i; const byte years = 15; money = 1000.0m; percent = 0.045m; for (i = 1; i

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚:

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

Π’ C# символы прСдставлСны Π½Π΅ 8-разрядным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π‘++ , Π° 16-разрядным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся юникодом (Unicode) . Π’ юникодС Π½Π°Π±ΠΎΡ€ символов прСдставлСн Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ символы практичСски ΠΈΠ· всСх СстСствСнных языков Π½Π° свСтС. Если для ΠΌΠ½ΠΎΠ³ΠΈΡ… СстСствСнных языков, Π² Ρ‚ΠΎΠΌ числС английского, французского ΠΈ Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΎΠ³ΠΎ, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСбольшиС Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρ‹, Ρ‚ΠΎ Π² рядС Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ китайском, ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ΡΡ довольно ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹ символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ 8-разрядным ΠΊΠΎΠ΄ΠΎΠΌ. Для прСодолСния этого ограничСния Π² C# ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ char , ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ 16-разрядныС значСния Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚ 0 Π΄ΠΎ 65 535. ΠŸΡ€ΠΈ этом стандартный Π½Π°Π±ΠΎΡ€ символов Π² 8-разрядном ΠΊΠΎΠ΄Π΅ ASCII являСтся подмноТСством юникода Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚ 0 Π΄ΠΎ 127. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, символы Π² ΠΊΠΎΠ΄Π΅ ASCII ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π² C#.

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

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…

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

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… опрСдСляСт:

  • Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°;
  • мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ этого Ρ‚ΠΈΠΏΠ°;
  • ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°ΠΌ этого Ρ‚ΠΈΠ½Π°.

Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· этих характСристик, программист Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для прСдставлСния Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ описаниС Ρ‚ΠΈΠΏΠ° позволяСт компилятору ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ допустимости Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… конструкций ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΡ‚ Ρ‚ΠΈΠΏΠ° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ зависят ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

ВсС Ρ‚ΠΈΠΏΡ‹ языка C++ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° основныС ΠΈ составныС . Π’ языкС C++ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΡˆΠ΅ΡΡ‚ΡŒ основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… для прСдставлСния Ρ†Π΅Π»Ρ‹Ρ…, вСщСствСнных, ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ логичСских Π²Π΅Π»ΠΈΡ‡ΠΈΠ½. На основС этих Ρ‚ΠΈΠΏΠΎΠ² программист ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ описаниС составных Ρ‚ΠΈΠΏΠΎΠ². К Π½ΠΈΠΌ относятся массивы, пСрСчислСния, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, структуры, ссылки, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, объСдинСния ΠΈ классы.

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ (стандартныС) Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ арифмСтичСскими, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² арифмСтичСских опСрациях. Для описания основных Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ :

  1. int (Ρ†Π΅Π»Ρ‹ΠΉ);
  2. char (ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ);
  3. wchar_t (Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ);
  4. bool (логичСский);
  5. float (вСщСствСнный);
  6. double (вСщСствСнный с Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ).

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ‚ΠΈΠ½Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ цСлочислСнными (Ρ†Π΅Π»Ρ‹ΠΌΠΈ ), послСдниС Π΄Π²Π° - Ρ‚ΠΈΠΏΠ°ΠΌΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ . Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ компилятор для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ†Π΅Π»Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½, отличаСтся ΠΎΡ‚ ΠΊΠΎΠ΄Π° для Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

БущСствуСт Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ спСцификатора Ρ‚ΠΈΠΏΠ° , ΡƒΡ‚ΠΎΡ‡Π½ΡΡŽΡ‰ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ стандартных Ρ‚ΠΈΠΏΠΎΠ²:

  • short (ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ);
  • long (Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ);
  • signed (Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ);
  • unsigned (Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ).

Π¦Π΅Π»Ρ‹ΠΉ Ρ‚ΠΈΠΏ (int)

Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° int Π½Π΅ опрСдСляСтся стандартом, Π° зависит ΠΎΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ компилятора. Для 16-разрядного процСссора ΠΏΠΎΠ΄ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ этого Ρ‚ΠΈΠΏΠ° отводится 2 Π±Π°ΠΉΡ‚Π°, для 32-разрядного - 4 Π±Π°ΠΉΡ‚Π°.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ short ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΈΠΏΠ° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ компилятору, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ число трСбуСтся отвСсти 2 Π±Π°ΠΉΡ‚Π° нСзависимо ΠΎΡ‚ разрядности процСссора. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ long ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ цСлая Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ 4 Π±Π°ΠΉΡ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π° 16-разрядном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ эквивалСнты int ΠΈ short int, Π° Π½Π° 32-разрядном - int ΠΈ long int.

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° - Ρ†Π΅Π»ΠΎΠ΅ число Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠŸΡ€ΠΈ использовании спСцификатора signed ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ числа интСрпрСтируСтся ΠΊΠ°ΠΊ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ (0 - ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число, 1 - ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅). Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ unsigned позволяСт ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ разряд рассматриваСтся ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° числа. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° int зависит ΠΎΡ‚ спСцификаторов. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ спСцификаторами для IBM PC-совмСстимых ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Β«Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ простых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…Β» Π² ΠΊΠΎΠ½Ρ†Π΅ записи.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС цСлочислСнныС Ρ‚ΠΈΠΏΡ‹ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ спСцификатор signed ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π°ΠΌ, Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΌΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, приписываСтся Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Ρ‚ΠΈΠΏ Π² соотвСтствии с ΠΈΡ… Π²ΠΈΠ΄ΠΎΠΌ. Если этот Ρ‚ΠΈΠΏ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π½Π΅ устраиваСт программиста, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ суффиксов L, l (long) ΠΈ U, u (unsigned). НапримСр, константа 32L Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ long ΠΈ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ 4 Π±Π°ΠΉΡ‚Π°. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ суффиксы L ΠΈ U ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 0x22UL ΠΈΠ»ΠΈ 05Lu.

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

Π’ΠΈΠΏΡ‹ short int, long int, signed int ΠΈ unsigned int ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ Π΄ΠΎ short, long, signed ΠΈ unsigned соотвСтствСнно.

Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ (char)

Под Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ символьного Ρ‚ΠΈΠΏΠ° отводится количСство Π±Π°ΠΉΡ‚, достаточноС для размСщСния любого символа ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° символов для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Ρ‡Ρ‚ΠΎ ΠΈ обусловило Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это 1 Π±Π°ΠΉΡ‚. Π’ΠΈΠΏ char, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ†Π΅Π»Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ со Π·Π½Π°ΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π±Π΅Π· Π·Π½Π°ΠΊΠ°. Π’ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°Ρ… со Π·Π½Π°ΠΊΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ -128 Π΄ΠΎ 127. ΠŸΡ€ΠΈ использовании спСцификатора unsigned значСния ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚ О Π΄ΠΎ 255. Π­Ρ‚ΠΎΠ³ΠΎ достаточно для хранСния любого символа ΠΈΠ· 256-символьного Π½Π°Π±ΠΎΡ€Π° ASCII. Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ‚ΠΈΠΏΠ° char ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ для хранСния Ρ†Π΅Π»Ρ‹Ρ… чисСл, Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΡ… Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ².

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ (wchar_t)

Π’ΠΈΠΏ wchar_t ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ символов, для ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… нСдостаточно 1 Π±Π°ΠΉΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Unicode. Π Π°Π·ΠΌΠ΅Ρ€ этого Ρ‚ΠΈΠΏΠ° зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ; ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠ½ соотвСтствуСт Ρ‚ΠΈΠΏΡƒ short. Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ константы Ρ‚ΠΈΠΏΠ° wchar_t Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ с прСфиксом L, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, LΒ»GatesΒ».

ЛогичСский Ρ‚ΠΈΠΏ (bool)

Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ логичСского Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния true ΠΈ false, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ словами. ВнутрСнняя Ρ„ΠΎΡ€ΠΌΠ° прСдставлСния значСния false - 0 (Π½ΡƒΠ»ΡŒ). Π›ΡŽΠ±ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ интСрпрСтируСтся ΠΊΠ°ΠΊ true. ΠŸΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ true ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1.

Π’ΠΈΠΏΡ‹ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ (float, double ΠΈ long double)

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ C++ опрСдСляСт Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… для хранСния вСщСствСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: float, double ΠΈ long double.

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ хранятся Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ цСлочислСнныС. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС вСщСствСнного числа состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй - мантиссы ΠΈ порядка. Π’ IBM PC-совмСстимых ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ‚ΠΈΠΏΠ° float Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ 4 Π±Π°ΠΉΡ‚Π°, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ΄ΠΈΠ½ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ разряд отводится ΠΏΠΎΠ΄ Π·Π½Π°ΠΊ мантиссы, 8 разрядов ΠΏΠΎΠ΄ порядок ΠΈ 23 ΠΏΠΎΠ΄ мантиссу. ΠœΠ°Π½Ρ‚ΠΈΡΡΠ° - это число, большСС 1.0, Π½ΠΎ мСньшСС 2.0. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΡ‚Π°Ρ€ΡˆΠ°Ρ Ρ†ΠΈΡ„Ρ€Π° мантиссы всСгда Ρ€Π°Π²Π½Π° 1, ΠΎΠ½Π° Π½Π΅ хранится.

Для Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ Ρ‚ΠΈΠΏΠ° double, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ… 8 Π±Π°ΠΉΡ‚, ΠΏΠΎΠ΄ порядок ΠΈ мантиссу отводится 11 ΠΈ 52 разряда соотвСтствСнно. Π”Π»ΠΈΠ½Π° мантиссы опрСдСляСт Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ числа, Π° Π΄Π»ΠΈΠ½Π° порядка - Π΅Π³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. Как ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² ΠΊΠΎΠ½Ρ†Π΅ записи, ΠΏΡ€ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΌ количСствС Π±Π°ΠΉΡ‚, ΠΎΡ‚Π²ΠΎΠ΄ΠΈΠΌΠΎΠΌ ΠΏΠΎΠ΄ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ‚ΠΈΠΏΠ° float ΠΈ long int, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ ΠΈΡ… допустимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ сильно Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΈΠ·-Π·Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ прСдставлСния .

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ long ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΈΠΏΠ° double ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ Π΅Π³ΠΎ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ отводится 10 Π±Π°ΠΉΡ‚.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚ΠΈΠΏ double. МоТно явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ константы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ суффиксов F, f (float) ΠΈ L, l (long). НапримСр, константа 2E+6L Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ long double, Π° константа 1.82f - Ρ‚ΠΈΠΏ float.

Для написания пСрСносимых Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ нСльзя Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΈΠΏΠ° int. Для Π΅Π³ΠΎ получСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ sizeof, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° Π² Π±Π°ΠΉΡ‚Π°Ρ…. НапримСр, для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы MS-DOS sizeof (int) даст Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ 2, Π° для Windows 98 ΠΈΠ»ΠΈ OS/2 Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ 4.

Π’ стандартС ANSI Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для основных Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

sizeof(float) ≀ slzeof(double) ≀ sizeof(long double)
sizeof(char) ≀ slzeof(short) ≀ sizeof(int) ≀ sizeof(long)

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

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ допустимыС значСния для Ρ†Π΅Π»Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² зависят ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ (), характСристики вСщСствСнных Ρ‚ΠΈΠΏΠΎΠ² - Π² Ρ„Π°ΠΉΠ»Π΅ (), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² шаблонС класса numeric_limits

Π’ΠΈΠΏ void

ΠšΡ€ΠΎΠΌΠ΅ пСрСчислСнных, ΠΊ основным Ρ‚ΠΈΠΏΠ°ΠΌ языка относится Ρ‚ΠΈΠΏ void, Π½ΠΎ мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ этого Ρ‚ΠΈΠΏΠ° пусто. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ значСния, для указания пустого списка Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ для ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ привСдСния Ρ‚ΠΈΠΏΠΎΠ².

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ простых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² C++ для IBM PC-совмСстимых ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ²

Q: Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ IBM PC-совмСстимый ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€?
A: IBM PC-совмСстимый ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ (Π°Π½Π³Π». IBM PC compatible) - ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ Π±Π»ΠΈΠ·ΠΊΠΈΠΉ ΠΊ IBM PC, XT ΠΈ AT. IBM PC-совмСстимыС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ построСны Π½Π° Π±Π°Π·Π΅ микропроцСссоров, совмСстимых с Intel 8086 (Π°, ΠΊΠ°ΠΊ извСстно, всС Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ процСссоры Intel ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с 8086). По сути это практичСски всС соврСмСнныС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹.

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

Π’ΠΈΠΏ Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π Π°Π·ΠΌΠ΅Ρ€ (Π±Π°ΠΉΡ‚)
bool true ΠΈ false 1
signed char -128 … 127 1
unsigned char 0 … 255 1
signed short int -32 768 … 32 767 2
unsigned short int 0 … 65 535 2
signed long int -2 147 483 648 … 2 147 483 647 4
unsigned long int 0 … 4 294 967 295 4
float 3.4e-38 … 3.4e+38 4
double 1.7e-308 … 1.7C+308 8
long double 3.4e-4932 … 3.4e+4932 10

Для вСщСствСнных Ρ‚ΠΈΠΏΠΎΠ² Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

К Π΄Π°Π½Π½Ρ‹ΠΌ относится любая информация, прСдставлСнная Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ сбор, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² Π­Π’Πœ (числа, символы, Π±ΠΈΡ‚Ρ‹ ΠΈ Π΄Ρ€.).
Π”Π°Π½Π½Ρ‹Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ исходными (Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ).
ВсС Π΄Π°Π½Π½Ρ‹Π΅ - ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ константы - ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ.
Π‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… связан свой Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (количСство Π±Π°ΠΉΡ‚ ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ΠΈ допустимыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ .

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² C/C++ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° основныС ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ .
К основным Ρ‚ΠΈΠΏΠ°ΠΌ относят:

  1. void (пустой Ρ‚ΠΈΠΏ),
  2. int (Ρ†Π΅Π»Ρ‹ΠΉ Ρ‚ΠΈΠΏ),
  3. float (вСщСствСнныС числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ),
  4. double (вСщСствСнныС числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности),
  5. char (ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ),
  6. bool - логичСский.

БоставныС Ρ‚ΠΈΠΏΡ‹

Для формирования Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ основныС Ρ‚ΠΈΠΏΡ‹ + Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ спСцификаторы . Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, созданныС Π½Π° Π±Π°Π·Π΅ стандартных Ρ‚ΠΈΠΏΠΎΠ² с использованиСм спСцификаторов, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ составными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… . Π’ C++ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ спСцификатора Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…:
  1. short - ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ;
  2. long - Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ;
  3. signed-Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ;
  4. unsigned-Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ.
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ – это:
  • массивы,
  • Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ,
  • классы,
  • ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ,
  • ссылки,
  • структуры,
  • объСдинСния.

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

Π”Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° char Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° всСгда Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ 1 Π±Π°ΠΉΡ‚. Π­Ρ‚ΠΎ связа­но с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ΄ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ символьного Ρ‚ΠΈΠΏΠ° отводят ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ памяти, сколько Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для хранСния любого ΠΈΠ· 256 символов ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹.
Π‘ΠΈΠΌΒ­Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ со Π·Π½Π°ΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π±Π΅Π· Π·Π½Π°ΠΊΠ° .
Π’ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°Ρ… со Π·Π½Π°ΠΊΠΎΠΌ signed char ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ -128 Π΄ΠΎ 127. БоотвСтствСн­но значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° unsigned char ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 255.
Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π Π°Π·ΠΌΠ΅Ρ€
char -128...+127 1 Π±Π°ΠΉΡ‚
unsigned char 0...255 1 Π±Π°ΠΉΡ‚
signed char -128...127 1 Π±Π°ΠΉΡ‚

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ встрСчаСтся ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ символ , ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ . ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ строка, ΠΏΡ€ΠΈ использовании Π² выраТСни­ях Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ . НапримСр: β€˜F’ , β€˜3’ , β€œΠ˜Π²Π°Π½β€, β€œ235”

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

Π”Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° int Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ 2, 4 ΠΈΠ»ΠΈ 8 Π±Π°ΠΉΡ‚. Π­Ρ‚ΠΎ зависит ΠΎΡ‚ разрядности процСссора.
По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС Ρ†Π΅Π»Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ спСцификатор signed (Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ) ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ.
Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ unsigned (Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ) позволяСт ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа.

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

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π Π°Π·ΠΌΠ΅Ρ€(Π±Π°ΠΉΡ‚)
int
signed int
signed long int
-2147483648 ... 2147483647 4
unsigned int
unsigned long int
0 ... 4294967295 4
short int
signed short int
-32768 ... 32767 2
unsigned short int 0... 65535 2
long long int \(-(2^{63}-1)...(2^{63}-1)\) 8
unsigned long
long int
\(0...(2^{64}-1)\) 8

ВСщСствСнный Ρ‚ΠΈΠΏ

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС вСщСствСнного числа Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° отлича­Стся ΠΎΡ‚ прСдставлСния Ρ†Π΅Π»ΠΎΠ³ΠΎ числа. Число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ прСдставлСно Π² ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ . $$\pm mE\pm p$$ Π³Π΄Π΅ m - мантисса (Ρ†Π΅Π»ΠΎΠ΅ ΠΈΠ»ΠΈ Π΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ число с дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ), Ρ€ - порядок (Ρ†Π΅Π»ΠΎΠ΅ число). Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСвСсти чис­ло Π² ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ с фиксированной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ мантиссу ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° Π΄Π΅ΡΡΡ‚ΡŒ Π² стСпСни порядок НапримСр: \(-6.42E+2=-6,42*10^{2}\)

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ вСщСствСнных Ρ‚ΠΈΠΏΠΎΠ²

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π Π°Π·ΠΌΠ΅Ρ€ (Π±Π°ΠΉΡ‚)
float 3.4E-38 ... 3.4E+38 4
double 1.7E-308... 1.7E+308 8
long double 3.4E-4932 ... 3.4E+4932 10

Π”Π»ΠΈΠ½Π° мантиссы опрСдСляСт Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ числа, Π° Π΄Π»ΠΈΠ½Π° порядка Π΅Π³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½.
Π”Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° float Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ 4 Π±Π°ΠΉΡ‚, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 1 Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ разряд отводится ΠΏΠΎΠ΄ Π·Π½Π°ΠΊ, 8 разрядов - ΠΏΠΎΠ΄ порядок ΠΈ 23 - ΠΏΠΎΠ΄ мантиссу. По­-ΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΡ‚Π°Ρ€ΡˆΠ°Ρ Ρ†ΠΈΡ„Ρ€Π° мантиссы всСгда Ρ€Π°Π²Π½Π° 1, ΠΎΠ½Π° Π½Π΅ хранится.
Π”Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° double Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ 8 Π±Π°ΠΉΡ‚, Π² Π½ΠΈΡ… ΠΏΠΎΠ΄ порядок -11 разрядов ΠΈ ΠΏΠΎΠ΄ мантиссу -52 разряда соотвСтствСнно.
Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ° long ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΈΠΏΠ° double ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ отводится 10 Π±Π°ΠΉΡ‚.

ЛогичСский Ρ‚ΠΈΠΏ

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ‚ΠΈΠΏΠ° bool ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° значСния true (истина) ΠΈΠ»ΠΈ false (лоТь). Π›ΡŽΠ±ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π΅ Ρ€Π°Π²Π½ΠΎΠ΅ Π½ΡƒΠ»ΡŽ, интСрпрСтируСтся ΠΊΠ°ΠΊ true, Π° ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π²Π½ΠΎΠ΅ 1. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false прСдставлСно Π² памяти ΠΊΠ°ΠΊ 0.

Π’ΠΈΠΏ void (пустой)

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ этого Ρ‚ΠΈΠΏΠ° пусто.
Π’ΠΈΠΏ void ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для:
  • опрСдСлСния Ρ„ΡƒΠ½Β­ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ значСния;
  • для указания пустого списка Π°Ρ€Π³ΡƒΠΌΠ΅Π½Β­Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;
  • ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ для ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ;
  • Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ привСдСния Ρ‚ΠΈΠΏΠΎΠ².

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ - это ΠΏΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ участок памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.
Π£ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΅ΡΡ‚ΡŒ имя (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€) ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ .
Имя слуТит для обращСния ΠΊ области памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
Имя (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€) - это ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠΊΠ², Ρ†ΠΈΡ„Ρ€ ΠΈ Π·Π½Π°ΠΊΠΎΠ² подчёркивания, Π·Π°Π΄Π°ΡŽΡ‰Π°Ρ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π―Π·Ρ‹ΠΊ Π‘/C++ чувствитСлСн ΠΊ рСгистру (Ρ‚.Π΅. Sum ΠΈ sum Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅).
Π³Π΄Π΅, Ρ‚ΠΈΠΏ – ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ ΠΎΠ±ΡŠΡ‘ΠΌ памяти (число Π±Π°ΠΉΡ‚ΠΎΠ²), Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ для хранСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹), (int – Ρ†Π΅Π»Ρ‹ΠΉ, float, double – вСщСствСнный, char – ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ, bool - логичСский);
имя – ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ символичСский адрСс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² памяти Π­Π’Πœ;
ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€ – Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² описании.
НапримСр: ΠžΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ² Β«,Β». ОписаниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° раздСляСтся Β« ; Β».
По мСсту обьявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² языкС Π‘/Π‘++ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Ρ‚Ρ€ΠΈ класса:
  1. Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅- ΠΎΠ±ΡŠΡΠ²Β­Π»ΡΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π΅ΠΉ;
  2. Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ - ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ доступны ΠΈΠ· любо­го мСста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹;
  3. Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² спискС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π’Π΅Π³ΠΈ: Π‘ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. char, int, unsigned, long, long long, float, double, long double, long float, lexical scoping. ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ИмСна ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π­ΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ°.

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

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

auto double int struct
break else long switch
register typedef char extern
return void case float
unsigned default for signed
union do if sizeof
volatile continue enum short
while inline
А Ρ‚Π°ΠΊΠΆΠ΅ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… слов, спСцифичных для Π΄Π°Π½Π½ΠΎΠΉ вСрсии компилятора, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ far , near , tiny , huge , asm , asm_ ΠΈ ΠΏΡ€.

НапримСр, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹
a, _, _1_, Sarkasm, a_long_variable, aLongVariable, var19, defaultX, char_type
Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅
1a, $value, a-long-value, short

Π‘ΠΈ - рСгистрозависимый язык. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ a ΠΈ A, ΠΈΠ»ΠΈ end ΠΈ END, ΠΈΠ»ΠΈ perfectDark ΠΈ PerfectDarK – это Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

Π’ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π’ ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ опрСдСляСт

  • 1) Π Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π±Π°ΠΉΡ‚Π°Ρ… (сколько Π±Π°ΠΉΡ‚ памяти Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ для хранСния значСния)
  • 2) ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² памяти (ΠΊΠ°ΠΊ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π±ΡƒΠ΄ΡƒΡ‚ располоТСны Π±ΠΈΡ‚Ρ‹ Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ области памяти).
Π’ си нСсколько основных Ρ‚ΠΈΠΏΠΎΠ². Π Π°Π·Π΄Π΅Π»ΠΈΠΌ ΠΈΡ… Π½Π° Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ - Ρ†Π΅Π»Ρ‹Π΅ ΠΈ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

Π¦Π΅Π»Ρ‹Π΅

  • char - Ρ€Π°Π·ΠΌΠ΅Ρ€ 1 Π±Π°ΠΉΡ‚. ВсСгда! Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ.
  • short - Ρ€Π°Π·ΠΌΠ΅Ρ€ 2 Π±Π°ΠΉΡ‚Π°
  • int - Ρ€Π°Π·ΠΌΠ΅Ρ€ 4 Π±Π°ΠΉΡ‚Π°
  • long - Ρ€Π°Π·ΠΌΠ΅Ρ€ 4 Π±Π°ΠΉΡ‚Π°
  • long long - Ρ€Π°Π·ΠΌΠ΅Ρ€ 8 Π±Π°ΠΉΡ‚.
Π—Π΄Π΅ΡΡŒ слСдуСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² си Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ явно, ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ…. Π’ стандартС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ

char <= short <= int <= long <= long long

Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ значСния Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ для компилятора VC2012 Π½Π° 32-разрядной машинС. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π΅ ΠΏΠΎΠ»Π΅Π½ΠΈΡ‚Π΅ΡΡŒ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π΅Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ€.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ максимальноС ΠΈ минимальноС число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ пСрСмСнная ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Ρ‚ΠΈΠΏΠΎΠ². Числа ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚ для хранСния Π·Π½Π°ΠΊΠ°. Иногда Π·Π½Π°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ…Ρ€Π°Π½ΠΈΠΌ счёт Π² Π±Π°Π½ΠΊΠ΅, Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ ΠΈ Ρ‚.Π΄.), Π° ΠΈΠ½ΠΎΠ³Π΄Π° Π² Π½Ρ‘ΠΌ Π½Π΅Ρ‚ нСобходимости (вСс, Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, возраст Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΈ Ρ‚.Π΄.). Для этого Π² си ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ° signed ΠΈ unsigned. unsigned char - всС 8 Π±ΠΈΡ‚ ΠΏΠΎΠ΄ число, ΠΈΡ‚ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π΅ΠΌ Π½Π°Π±ΠΎΡ€ чисСл ΠΎΡ‚ 00000000 Π΄ΠΎ 11111111 Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‚ 0 Π΄ΠΎ 255 signed char ΠΎΡ‚ -128 Π΄ΠΎ 128. Π’ си ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ со Π·Π½Π°ΠΊΠΎΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ запись char ΠΈ signed char эквивалСнтны.

Π’Π°Π±. 1 Π Π°Π·ΠΌΠ΅Ρ€ Ρ†Π΅Π»Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² си.
Π’ΠΈΠΏ Π Π°Π·ΠΌΠ΅Ρ€, Π±Π°ΠΉΡ‚ МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
unsigned char 1 0 255
signed char
(char)
1 -128 127
unsigned short 2 0 65535
signed short
(short)
2 -32768 32767
unsigned int
(unsigned)
4 0 4294967296
signed int
(int)
4 -2147483648 2147483647
unsigned long 4 0 4294967296
signed long
(long)
4 -2147483648 2147483647
unsigned long long 8 0 18446744073709551615
signed long long
(long long)
8 -9223372036854775808 9223372036854775807

sizeof

Π’ си Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π±Π°ΠΉΡ‚Π°Ρ…. sizeof пСрСмСнная, ΠΈΠ»ΠΈ sizeof(пСрСмСнная) ΠΈΠ»ΠΈ sizeof(Ρ‚ΠΈΠΏ). Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ функция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ возмоТности ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΈΠΏΠΎΠ² Π²ΠΎ врСмя выполнСния прилоТСния. НапишСм Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

#include #include int main() { char c; short s; int i; long l; long long L; //Π’Ρ‹Π·ΠΎΠ² sizeof ΠΊΠ°ΠΊ "Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ" printf("sizeof(char) = %d\n", sizeof(c)); printf("sizeof(short) = %d\n", sizeof(s)); printf("sizeof(int) = %d\n", sizeof(i)); printf("sizeof(long) = %d\n", sizeof(l)); printf("sizeof(long long) = %d\n", sizeof(L)); //Π’Ρ‹Π·ΠΎΠ² ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° printf("sizeof(char) = %d\n", sizeof c); printf("sizeof(short) = %d\n", sizeof s); printf("sizeof(int) = %d\n", sizeof i); printf("sizeof(long) = %d\n", sizeof l); printf("sizeof(long long) = %d\n", sizeof L); _getch(); }

(Π― Π΄ΡƒΠΌΠ°ΡŽ ясно, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любоС Π²Π°Π»ΠΈΠ΄Π½ΠΎΠ΅ имя). Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‰Π΅

#include #include int main() { printf("sizeof(char) = %d\n", sizeof(char)); printf("sizeof(short) = %d\n", sizeof(short)); printf("sizeof(int) = %d\n", sizeof(int)); printf("sizeof(long) = %d\n", sizeof(long)); printf("sizeof(long long) = %d\n", sizeof(long long)); //нСльзя произвСсти Π²Ρ‹Π·ΠΎΠ² sizeof ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° для ΠΈΠΌΠ΅Π½ΠΈ Ρ‚ΠΈΠΏΠ° //sizeof int - ошибка компиляции _getch(); }

Π’ си ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Π½Π°Π·Π²Π°Π½ΠΈΠΉ
short === short int
long === long int
long long === long long int
unsigned int === unsigned

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

  • float - 4 Π±Π°ΠΉΡ‚Π°,
  • long float - 8 Π±Π°ΠΉΡ‚
  • double - 8 Π±Π°ΠΉΡ‚
  • long double - 8 Π±Π°ΠΉΡ‚.
Π—Π΄Π΅ΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ значСния для VC2012, ΠΏΠΎ стандарту Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠΎΠ² float <= long float <= double <= long double всС числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ - со Π·Π½Π°ΠΊΠΎΠΌ.

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π‘ΠΈ Π½Π΅ слСдит Π·Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ постоянно увСличивая Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, скаТСм, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° int Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΌΡ‹ "сбросим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅"

#include #include void main() { unsigned a = 4294967295; int b = 2147483647; //ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° printf("%u\n", a); a += 1; printf("%u", a); //ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° printf("%d\n", b); b += 1; printf("%d", b); getch(); }

Π’ΠΎΠΎΠ±Ρ‰Π΅, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΈΠΏΠ° unsigned : Π‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ сбросит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, ΠΈ Ссли Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ, Π΄Π΅Π»Π°ΠΉΡ‚Π΅ это Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, провСряя Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΠ½Ρ‹Π΅ способы, зависящиС ΠΎΡ‚ компилятора ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ процСссора.

ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°

П Ρ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с числами ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»ΠΈΡ‚Π΅Ρ€ Π² ΠΊΠΎΠ½Ρ†Π΅ числа явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

  • 11 - число Ρ‚ΠΈΠΏΠ° int
  • 10u - unsigned
  • 22l ΠΈΠ»ΠΈ 22L - long
  • 3890ll ΠΈΠ»ΠΈ 3890LL - long long (Π° Ρ‚Π°ΠΊΠΆΠ΅ lL ΠΈΠ»ΠΈ Ll)
  • 80.0f ΠΈΠ»ΠΈ 80.f ΠΈΠ»ΠΈ 80.0F - float (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΈ Π² записи)
  • 3.0 - число Ρ‚ΠΈΠΏΠ° double
Π­ΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° записи Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ число Ρ‚ΠΈΠΏΠ° double. #include #include int main() { printf("sizeof(int) = %d\n", sizeof(10)); printf("sizeof(unigned) = %d\n", sizeof(10u)); printf("sizeof(long) = %d\n", sizeof(10l)); printf("sizeof(long long) = %d\n", sizeof(10ll)); printf("sizeof(float) = %d\n", sizeof(10.f)); printf("sizeof(double) = %d\n", sizeof(10.)); printf("sizeof(double) = %d\n", sizeof(10e2)); getch(); }

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ошибкам, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ происходит нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°

Int a = 10u; double g = 3.f;

ШСстнадцатСричный ΠΈ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚

Π’ ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ с числами ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ прСдставлСния. Числа Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΡ€ΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с 0x, Π² Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС с нуля. БоотвСтствСнно, Ссли число начинаСтся с нуля, Ρ‚ΠΎ Π² Π½Ρ‘ΠΌ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ†ΠΈΡ„Ρ€ Π²Ρ‹ΡˆΠ΅ 7:

#include #include void main() { int x = 0xFF; int y = 077; printf("hex x = %x\n", x); printf("dec x = %d\n", x); printf("oct x = %o\n", x); printf("oct y = %o\n", y); printf("dec y = %d\n", y); printf("hex y = %x", y); getch(); }

Π­ΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° прСдставлСния чисСл

Π­ ΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ прСдставлСния числа Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ прСдставлСниС числа Π² Π²ΠΈΠ΄Π΅ M e Β± p , Π³Π΄Π΅ M - мантиса числа, p - ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ дСсяти. ΠŸΡ€ΠΈ этом Ρƒ мантисы Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π·Π½Π°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄ дСсятичной запятой.
НапримСр 1.25 === 1.25e0, 123.5 === 1.235e2, 0.0002341 === 2.341e-4 ΠΈ Ρ‚.Π΄.
ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡ 3.2435e7 эквивалСнтно 3.2435e+7
БущСствСут ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ прСдставлСниС ("ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠ΅"), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ Ρ‚Ρ€ΠΎΠΉΠΊΠ΅. НапримСр 1.25 === 1.25e0, 123.5 === 123.5e0, 0.0002341 === 234.1e-6, 0.25873256 === 258.73256e-3 ΠΈ Ρ‚.Π΄.

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π’ си ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ всСгда Π² Π½Π°Ρ‡Π°Π»Π΅ Π±Π»ΠΎΠΊΠ° (Π±Π»ΠΎΠΊ - участок ΠΊΠΎΠ΄Π°,ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками)

<Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ> <имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ> (<Ρ‚ΠΈΠΏ> <Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚>[, <Ρ‚ΠΈΠΏ> <Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚>]) { объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ }

ΠŸΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π΅Ρ‘ Ρ‚ΠΈΠΏ ΠΈ имя.

Int a; double parameter;

МоТно ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ² ΠΈΠΌΠ΅Π½Π° запятой

Long long arg1, arg2, arg3;

НапримСр

#include #include int main() { int a = 10; int b; while (a>0){ int z = a*a; b += z; } }

Π—Π΄Π΅ΡΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ a ΠΈ b Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main , ΠΈ пСрСмСнная z Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции

Int main() { int i; i = 10; int j; }

Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ стоит послС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания. ΠŸΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡ… сразу ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.
int i = 0;
ΠŸΡ€ΠΈ этом инициализация ΠΏΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ считаСтся Π·Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, поэтому ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ

Int main() { int i = 10; int j; }

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

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

#include #include int main() { int i; printf("%d", i); getch(); }

Если Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° VC, Ρ‚ΠΎ Π²ΠΎ врСмя выполнСния Π²Ρ‹Π»Π΅Ρ‚ΠΈΡ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅
Run-Time Check Failure #3 - The variable "i" is being used without being initialized.
Если Π½Π°ΠΆΠ°Ρ‚ΡŒ "ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ", Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ "мусор". Π’ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… компиляторах ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ прСдупрСТдСния.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

П Π΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ (ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ пСрСмСнная Π²ΠΈΠ΄Π½Π° всСм функциям, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ пСрСмСнная ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° своСй ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости. Когда я Π³ΠΎΠ²ΠΎΡ€ΡŽ, Ρ‡Ρ‚ΠΎ пСрСмСнная "Π²ΠΈΠ΄Π½Π° Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ мСстС", это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² этом мСстС ΠΎΠ½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΈ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. НапримСр, рассмотрим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ глобальная пСрСмСнная

#include #include int global = 100; void foo() { printf("foo: %d\n", global); } void bar(int global) { printf("bar: %d\n", global); } int main() { foo(); bar(333); getch(); }

Π‘ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ
foo: 100
bar: 333
Π—Π΄Π΅ΡΡŒ глобальная пСрСмСнная global Π²ΠΈΠ΄Π½Π° всСм функциям. Но Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Ρ‚ΠΈΡ€Π°Π΅Ρ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, поэтому ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° 333 выводится локальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 333.
Π’ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

#include #include int global = 100; int main() { int global = 555; printf("%d\n", global); getch(); }

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ 555. Π’Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ случаС, локальная пСрСмСнная "Π²Π°ΠΆΠ½Π΅Π΅". ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, объявлСнная Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ области видимости Π½Π΅ Π²ΠΈΠ΄Π½Π° Π²Π½Π΅ Π΅Ρ‘, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

#include #include int global = 100; int main() { int x = 10; { int y = 30; printf("%d", x); } printf("%d", y); }

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ скомпилируСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ пСрСмСнная y сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ своСго Π±Π»ΠΎΠΊΠ°.
Π’ΠΎΡ‚ Π΅Ρ‰Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°

#include #include int global = 100; int main() { int x = 10; { int x = 20; { int x = 30; printf("%d\n", x); } printf("%d\n", x); } printf("%d\n", x); getch(); }

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚
30
20
10
Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ. ΠžΡ‡Π΅Π½ΡŒ часто ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ попытаСмся Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ. Π’ Π²Π°ΡˆΠΈΡ… простых ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ выглядят Π²ΠΏΠΎΠ»Π½Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Но ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅

  • 1) РазрабатываСтся нСсколькими людьми ΠΈ состоит ΠΈΠ· сотСн тысяч строк ΠΊΠΎΠ΄Π°
  • 2) Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

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

БСзусловно, Π΅ΡΡ‚ΡŒ ситуации, ΠΊΠΎΠ³Π΄Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ситуации ΡΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π½Π΅ часто ΠΈ Π½Π΅ Π² Π²Π°ΡˆΠΈΡ… Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… заданиях, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ НЕ Π‘ΠžΠ—Π”ΠΠ’ΠΠ™Π’Π• Π“Π›ΠžΠ‘ΠΠ›Π¬ΠΠ«Π₯ ΠŸΠ•Π Π•ΠœΠ•ΠΠΠ«Π₯!
ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ цСлочислСнными ΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. БущСствуСт мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π² дальнСйшСм.

ПослСднСС обновлСниС: 13.11.2017

Как ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования, Π² C# Π΅ΡΡ‚ΡŒ своя систСма Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… опрСдСляСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС Π΄Π°Π½Π½Ρ‹Ρ…, мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ допустимыС дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

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

    bool : Ρ…Ρ€Π°Π½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true ΠΈΠ»ΠΈ false (логичСскиС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹). ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.Boolean

    Bool alive = true; bool isDead = false;

    byte : Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 0 Π΄ΠΎ 255 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 1 Π±Π°ΠΉΡ‚. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.Byte

    Byte bit1 = 1; byte bit2 = 102;

    sbyte : Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ -128 Π΄ΠΎ 127 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 1 Π±Π°ΠΉΡ‚. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.SByte

    Sbyte bit1 = -101; sbyte bit2 = 102;

    short : Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ -32768 Π΄ΠΎ 32767 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π±Π°ΠΉΡ‚Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.Int16

    Short n1 = 1; short n2 = 102;

    ushort : Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 0 Π΄ΠΎ 65535 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π±Π°ΠΉΡ‚Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.UInt16

    Ushort n1 = 1; ushort n2 = 102;

    int : Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ -2147483648 Π΄ΠΎ 2147483647 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 4 Π±Π°ΠΉΡ‚Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.Int32 . ВсС цСлочислСнныС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ значСния Ρ‚ΠΈΠΏΠ° int:

    Int a = 10; int b = 0b101; // бинарная Ρ„ΠΎΡ€ΠΌΠ° b =5 int c = 0xFF; // ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° c = 255

    uint : Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 0 Π΄ΠΎ 4294967295 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 4 Π±Π°ΠΉΡ‚Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.UInt32

    Uint a = 10; uint b = 0b101; uint c = 0xFF;

    long : Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ –9 223 372 036 854 775 808 Π΄ΠΎ 9 223 372 036 854 775 807 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 8 Π±Π°ΠΉΡ‚. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.Int64

    Long a = -10; long b = 0b101; long c = 0xFF;

    ulong : Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 0 Π΄ΠΎ 18 446 744 073 709 551 615 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 8 Π±Π°ΠΉΡ‚. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.UInt64

    Ulong a = 10; ulong b = 0b101; ulong c = 0xFF;

    float : Ρ…Ρ€Π°Π½ΠΈΡ‚ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΎΡ‚ -3.4*10 38 Π΄ΠΎ 3.4*10 38 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 4 Π±Π°ΠΉΡ‚Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.Single

    double : Ρ…Ρ€Π°Π½ΠΈΡ‚ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΎΡ‚ Β±5.0*10 -324 Π΄ΠΎ Β±1.7*10 308 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 8 Π±Π°ΠΉΡ‚Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.Double

    decimal : Ρ…Ρ€Π°Π½ΠΈΡ‚ дСсятичноС Π΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ число. Если употрСбляСтся Π±Π΅Π· дСсятичной запятой, ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Β±1.0*10 -28 Π΄ΠΎ Β±7.9228*10 28 , ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 28 Π·Π½Π°ΠΊΠΎΠ² послС запятой ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 16 Π±Π°ΠΉΡ‚. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.Decimal

    char : Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ символ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Unicode ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π±Π°ΠΉΡ‚Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.Char . Π­Ρ‚ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹:

    Char a = "A"; char b = "\x5A"; char c = "\u0420";

    string : Ρ…Ρ€Π°Π½ΠΈΡ‚ Π½Π°Π±ΠΎΡ€ символов Unicode. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.String . Π­Ρ‚ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹.

    String hello = "Hello"; string word = "world";

    object : ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ любого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 4 Π±Π°ΠΉΡ‚Π° Π½Π° 32-разрядной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ 8 Π±Π°ΠΉΡ‚ Π½Π° 64-разрядной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ систСмным Ρ‚ΠΈΠΏΠΎΠΌ System.Object , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ классов.NET.

    Object a = 22; object b = 3.14; object c = "hello code";

НапримСр, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ ΠΈΡ… значСния Π½Π° консоль:

Using System; namespace HelloApp { class Program { static void Main(string args) { string name = "Tom"; int age = 33; bool isEmployed = false; double weight = 78.65; Console.WriteLine($"Имя: {name}"); Console.WriteLine($"Возраст: {age}"); Console.WriteLine($"ВСс: {weight}"); Console.WriteLine($"Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚: {isEmployed}"); } } }

Для Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° консоль здСсь примСняСтся интСрполяция: ΠΏΠ΅Ρ€Π΅Π΄ строкой ставится Π·Π½Π°ΠΊ $ ΠΈ послС этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² строку Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠšΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Имя: Tom Возраст: 33 ВСс: 78,65 Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚: False

ИспользованиС суффиксов

ΠŸΡ€ΠΈ присвоСнии Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π°Π΄ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚ΠΎΠ½ΠΊΠΎΡΡ‚ΡŒ: всС вСщСствСнныС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ значСния Ρ‚ΠΈΠΏΠ° double . И Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ число прСдставляСт Ρ‚ΠΈΠΏ float ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏ decimal , Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρƒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ суффикс: F/f - для float ΠΈ M/m - для decimal.

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ всС цСлочислСнныС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ значСния Ρ‚ΠΈΠΏΠ° int . Π§Ρ‚ΠΎΠ±Ρ‹ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ цСлочислСнный Π»ΠΈΡ‚Π΅Ρ€Π°Π» прСдставляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° uint, Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ суффикс U/u , для Ρ‚ΠΈΠΏΠ° long - суффикс L/l , Π° для Ρ‚ΠΈΠΏΠ° ulong - суффикс UL/ul :

Uint a = 10U; long b = 20L; ulong c = 30UL;

ИспользованиС систСмных Ρ‚ΠΈΠΏΠΎΠ²

Π’Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈ пСрСчислСнии всСх Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ упоминался систСмный Ρ‚ΠΈΠΏ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ встроСнного Ρ‚ΠΈΠΏΠ° ΠΏΠΎ сути прСдставляСт собой сокращСнноС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ систСмного Ρ‚ΠΈΠΏΠ°. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ эквивалСнтны ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ:

Int a = 4; System.Int32 b = 4;

НСявная типизация

Π Π°Π½Π΅Π΅ ΠΌΡ‹ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, int x; . И компилятор ΠΏΡ€ΠΈ запускС ΡƒΠΆΠ΅ Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ x Ρ…Ρ€Π°Π½ΠΈΡ‚ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Однако ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ модСль нСявной Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ:

Var hello = "Hell to World"; var c = 20; Console.WriteLine(c.GetType().ToString()); Console.WriteLine(hello.GetType().ToString());

Для нСявной Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ вмСсто названия Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово var . Π—Π°Ρ‚Π΅ΠΌ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈ компиляции компилятор сам Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… исходя ΠΈΠ· присвоСнного значСния. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ использовалось Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Console.WriteLine(c.GetType().ToString()); , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт Π½Π°ΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС цСлочислСнныС значСния Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ значСния Ρ‚ΠΈΠΏΠ° int , Ρ‚ΠΎ поэтому Π² ΠΈΡ‚ΠΎΠ³Π΅ пСрСмСнная c Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ int ΠΈΠ»ΠΈ System.Int32

Π­Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ сначала ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ нСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

// этот ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ int a; a = 20; // этот ΠΊΠΎΠ΄ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ var c; c= 20;

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² качСствС значСния нСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ null:

// этот ΠΊΠΎΠ΄ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ var c=null;

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null, Ρ‚ΠΎ компилятор Π½Π΅ смоТСт вывСсти Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

double ΠΈΠ»ΠΈ decimal

Из Π²Ρ‹ΡˆΠ΅ пСрСчислСнного списка Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ числа Π΄ΠΎ 256, Ρ‚ΠΎ для ΠΈΡ… хранСния ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° byte . ΠŸΡ€ΠΈ использовании Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ short, int, long. Π’ΠΎ ΠΆΠ΅ самоС для Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… чисСл - для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… чисСл ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ float, для ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… чисСл - Ρ‚ΠΈΠΏ double. Π’ΠΈΠΏ decimal здСсь стоит особняком Π² Ρ‚ΠΎΠΌ ΠΏΠ»Π°Π½Π΅, Ρ‡Ρ‚ΠΎ нСсмотря Π½Π° Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚ΠΈΠΏΠΎΠΌ double, Ρ‚ΠΈΠΏ double ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ большСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Однако Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ decimal ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄ΠΎ 28 Π·Π½Π°ΠΊΠΎΠ² послС запятой, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° double - 15-16 Π·Π½Π°ΠΊΠΎΠ² послС запятой.

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

  • Π Π°Π·Π΄Π΅Π»Ρ‹ сайта