Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ Π‘ΠΈ - руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 17

Автор M. УЭИВ

     Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ознакомились с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ количСством ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². А Π·Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π² Π½Π΅Ρ‡Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„Ρ€Π°Π·Ρ‹:

БСмья NAME, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, лишь Π½Π° XXX.XX Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ² Π±ΠΎΠ³Π°Ρ‡Π΅!

Π—Π΄Π΅ΡΡŒ NAME ΠΈ Π₯Π₯Π₯.Π₯Π₯ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ значСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, скаТСм name[40] ΠΈ cash. Π’ΠΎΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ:

printf(" БСмья %s, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, лишь Π½Π° %.2f Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ²

Π±ΠΎΠ³Π°Ρ‡Π΅! \n", name, cash);

      Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ Π±Π΅Π· Ρ‚Π΅Π½ΠΈ сомнСния примСняли спСцификации прСобразования для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, %f для Ρ‚ΠΈΠΏΠ° float ΠΈ Ρ‚. Π΄. Но, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ поиска ΠΊΠΎΠ΄Π° ASCII, для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ символа Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ printf() ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ для прСобразования Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ. ΠœΡ‹ Π½Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ, Ρ‚Π΅Ρ€ΡΡ‚ΡŒ чувство Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΏΠΎ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ.

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf( ) для прСобразования Π΄Π°Π½Π½Ρ‹Ρ…

     Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ снова займСмся Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Ρ… чисСл. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΡƒΠΆΠ΅ освСдомлСны ΠΎ полях, Ρ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ± использовании символа /, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΈΡ… Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ†.

main( )

{

printf(" %d\n", 336);

printf(" %o\n", 336);

printf(" %x\n", 336);

printf(" %d\n",  -336);

printf(" %u\n",  -336);

}

Π’ нашСй систСмС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ

336

520

150

-336

-65200

     ΠšΠ°ΠΊ Π²Ρ‹, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ, ΠΏΡ€ΠΈ использовании спСцификации %d Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ число 336 Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π²ΡˆΠ΅ΠΌΡΡ Ρ‡ΡƒΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅. Но Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ "попроситС" ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ это дСсятичноС Ρ†Π΅Π»ΠΎΠ΅ число Π² Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. Она Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ число 520, ΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌ эквивалСнтом 336 (5Ρ…64+2Ρ…8+0Ρ… 1= 336). Аналогично ΠΏΡ€ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ этого числа Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ 150.

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

     Π‘Π΄Π΅Π»Π°Π΅ΠΌ Π΅Ρ‰Π΅ нСсколько Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ. ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ числа -336 ΠΏΡ€ΠΈ использовании спСцификации %d Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ затруднСния. ΠŸΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΆΠ΅ спСцификации %u (unsigned - бСззнаковая) ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ число 65200, Π° Π½Π΅ 336, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° получСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π»Π΅ΠΆΠΈΡ‚ Π² способС прСдставлСния ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл Π² нашСй систСмС. Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ "Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄". Числа ΠΎΡ‚ 0 Π΄ΠΎ 32767 ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π° ΠΎΡ‚ 32768 Π΄ΠΎ 65535 ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ 65535 ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ число -1, 65534 - число -2 ΠΈ Ρ‚. Π΄. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ числу -336 соотвСтствуСт 65536, -336 = 65200. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ примСняСтся Π½Π΅ Π²ΠΎ всСх систСмах. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΡ‚ΡΡŽΠ΄Π° слСдуСт Π²Ρ‹Π²ΠΎΠ΄: Π½Π΅ ΠΎΠΆΠΈΠ΄Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ спСцификация прСобразования %u ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ просто ΠΊ ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Π½ΠΈΡŽ Π·Π½Π°ΠΊΠ° числа.

     Π‘Сйчас ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ интСрСсного ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ ΡƒΠΆΠ΅ касались Ρ€Π°Π½Π΅Π΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ использованию Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf() для нахоТдСния ΠΊΠΎΠ΄Π° ASCII Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ символа. НапримСр ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

printf(" %c%d\n" , ' А', ' А');

выдаст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

A 65

А - это Π±ΡƒΠΊΠ²Π°, Π° 65 - дСсятичный ΠΊΠΎΠ΄ ASCII символа А. ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ %ΠΎ, Ссли Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ASCII символа А.

     Π’сС Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π΄Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ нахоТдСния ΠΊΠΎΠ΄ΠΎΠ² ASCII для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… символов ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π’ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Ρ‚Π΅ Π΅ΠΌΡƒ поиск ΠΊΠΎΠ΄ΠΎΠ² Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π–. Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ число, большС 255, Π² символ? Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π΅ выполнСния Π΄Π°Π΄ΡƒΡ‚ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° этот вопрос:

printf(" %d %c\n" , 336, 336);

336 P

     Π”Ссятичный ΠΊΠΎΠ΄ ASCII символа Π  Ρ€Π°Π²Π΅Π½ 80, Π° 336 - это 256 + 80. Π”Π°Π½Π½ΠΎΠ΅ число, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, интСрпрСтируСтся ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ 256. (Π­Ρ‚ΠΎ матСматичСский Ρ‚Π΅Ρ€ΠΌΠΈΠ½, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ остаток ΠΎΡ‚ дСлСния числа Π½Π° 256.) Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, всякий Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ чис Π»Π°, ΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ 256, отсчСт начинаСтся сначала, ΠΈ 256 рассматриваСтся ΠΊΠ°ΠΊ 0, 257 - ΠΊΠ°ΠΊ 1, 511 - ΠΊΠ°ΠΊ 255, 512 - ΠΊΠ°ΠΊ 0, 513 - ΠΊΠ°ΠΊ 1 ΠΈ Ρ‚. Π΄.

     Π˜, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, попытаСмся Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ число (65616), ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰Π΅Π΅ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° int Π² нашСй систСмС (32767):

printf(" %1d %d\n" , 65616, 65616);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

65616   80

     ΠœΡ‹ снова Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ дСйствия Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎ "ΠΌΠΎΠ΄ΡƒΠ»ΡŽ" На этот Ρ€Π°Π· счСт вСдСтся Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ ΠΏΠΎ 65536. Числа ΠΌΠ΅ΠΆΠ΄Ρƒ 32767 ΠΈ 65536 Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ·-Π·Π° способа ΠΈΡ… прСдставлСния Π² памяти ΠΌΠ°ΡˆΠΈΠ½Ρ‹. БистСмы с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΌΠΈ ячССк памяти, ΠΎΡ‚Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π²Π΅Π΄ΡƒΡ‚ сСбя Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, Π½ΠΎ ΠΏΡ€ΠΈ этом Π΄Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ числовыС значСния.

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

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ scanf( ) 

     ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² дальнСйшСм ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ функция scanf( ) лишь эпизодичСски, ΠΌΡ‹ рассмотрим здСсь Ρ‚ΠΎΠ»ΡŒΠΊΠΎ основныС особСнности Π΅Π΅ примСнСния.

     Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf( ), для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ scanf( ) ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ строка ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Π½Π΅ΠΉ список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π΄Π²ΡƒΡ… этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² особСнности Π΄Π°Π½Π½ΠΎΠ³ΠΎ списка. Ѐункция printf( ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… константы ΠΈ выраТСния, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ функция scanf( ) - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ‚Π°ΠΊΠΈΡ… указатСлях. НСобходимо ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°:

     1. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ввСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· основных Ρ‚ΠΈΠΏΠΎΠ², Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ nepΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ трСбуСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ символ &.

     2. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ввСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ строковой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ символ & Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.


ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

main( )

{

int age;

float assets;

char pet [30];

printf(" Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ ваш возраст, состояниС ΠΈ любимоС ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅.\n" );

scanf(" %d  %f" , &age, &assets);

scanf(" %s" , pet);  /* & отсутствуСт ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ массива

символов */ printf("%d  $%.0f  %s\n", age, assets, pet);

}

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄ΠΈΠ°Π»ΠΎΠ³Π°:

Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ ВАШ Π’ΠžΠ—Π ΠΠ‘Π’, состояниС ΠΈ любимоС ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅.

82

8345245.19  носорог

82  $8345245  носорог

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

     Π€ΡƒΠ½ΠΊΡ†ΠΈΡ scanf( ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ практичСски Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€ символов спСцификации прСобразования, Ρ‡Ρ‚ΠΎ ΠΈ функция printf( ). ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ отличия Π² случаС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ scanf( ) ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

     1. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ спСцификация %g.

     2. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ %f ΠΈ %Π΅ эквивалСнтны. ОбС спСцификации Π΄ΠΎ ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ (ΠΈΠ»ΠΈ отсутствиС) Π·Π½Π°ΠΊΠ°, строки Ρ†ΠΈΡ„Ρ€ с дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈΠ»ΠΈ Π±Π΅Π· Π½Π΅Π΅ ΠΈ поля показатСля стСпСни.

     3. Для чтСния Ρ†Π΅Π»Ρ‹Ρ… чисСл Ρ‚ΠΈΠΏΠ° short примСняСтся спСцификация %h.

     Π€ΡƒΠ½ΠΊΡ†ΠΈΡ scanf( ) Π½Π΅ являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка Π‘ΠΈ. ΠœΡ‹ обсуТдаСм Π΅Π΅ здСсь Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ·-Π·Π° Π΅Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (ΠΎΠ½Π° позволяСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ всСх ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Ρ‚ΠΈΠΏΠΎΠ²); ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π‘ΠΈ имССтся Π΅Ρ‰Π΅ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΡ… Π²Π²ΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ getchar( ) ΠΈ gets( ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для выполнСния ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ - чтСния ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… символов ΠΈΠ»ΠΈ строк, содСрТащих ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. ΠœΡ‹ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Π³Π». 6, 13 ΠΈ 15.