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

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

Автор M. УЭИВ

Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ строка - строка символов, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. НапримСр, Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅:

printf(" %d ΠΆΠ΅Π½Ρ‰ΠΈΠ½ Π²Ρ‹ΠΏΠΈΠ»ΠΈ %f стаканов Π»ΠΈΠΊΠ΅Ρ€Π°. \n" , number, ouzo);

ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ строкой слуТит Ρ„Ρ€Π°Π·Π° Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… (учитывая ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ замСчания, это - строка символов), a number ΠΈ ouzo - Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС значСния Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

  


                                                              РИБ. 4.6. АргумСнты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf( )

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

printf(" Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ числа pi Ρ€Π°Π²Π½ΠΎ %f.\n", PI);

На этот Ρ€Π°Π· список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ элСмСнт - ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ константу PI.

     ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ строкС содСрТится информация Π΄Π²ΡƒΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ²:

     1. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹, ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹Π΅ Ρ‚Π΅ΠΊΡΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ.

     2. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ "спСцификациями прСобразования".

  


                                                           РИБ. 4.7. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ строки

     ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΈΠ· списка, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π·Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ строкой, Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Π° спСцификация прСобразования. Π“ΠΎΡ€Π΅ Π²Π°ΠΌ, Ссли Π²Ρ‹ Π·Π°Π±ΡƒΠ΄Π΅Ρ‚Π΅ это основноС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅. Никогда Π½Π΅ ΠΏΠΈΡˆΠΈΡ‚Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

printf("ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ слизняков %d, чСрвяков %d.\n", scorel);

     3дСсь отсутствуСт Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ для Π²Ρ‚ΠΎΡ€ΠΎΠΉ спСцификации прСобразования %d. Бпособ проявлСния этой ошибки Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ зависит ΠΎΡ‚ вашСй Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы, Π½ΠΎ Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ бСссмыслицу.

     Π•сли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„Ρ€Π°Π·Ρƒ, Ρ‚ΠΎ Π½Π΅Ρ‚ нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ прСобразования; Ссли ΠΆΠ΅ трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вывСсти Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΈ Π±Π΅Π· использования коммСнтария. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅, Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌ.

printf("ΠŸΡ€ΠΎΡ‰Π°ΠΉ! Π’Π²ΠΎΠ΅ искусство слишком Π΄ΠΎΡ€ΠΎΠ³ΠΎ для мСня.\n");

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

     Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ· ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΠΎΠ³ΠΎ списка являСтся символьной константой, Π° Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

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

рс = 2*6;

printf("Волько %d%% стряпни Π‘Π°Π»Π»ΠΈ Π±Ρ‹Π»ΠΎ съСдобно.\n", рс);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Волько 12%  стряпни Π‘Π°Π»Π»ΠΈ Π±Ρ‹Π»ΠΎ съСдобно.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ спСцификации прСобразования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf( )

     ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ нСсколько Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ основноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ спСцификации прСобразования, помСстив ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π½Π°ΠΊΠΎΠΌ % ΠΈ cΠΈΠΌΠ²oΠ»oΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΌ Ρ‚ΠΈΠΏ прСобразования. Π’ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π½ΠΈΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π΄Π°Π½ список Ρ‚Π΅Ρ… символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΎ Ρ‚ΡƒΠ΄Π° ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈ использовании ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ числСны Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ этом Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π½Π΅ всС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ - АргумСнт Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒΡΡ с Π»Π΅Π²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ поля Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ (ΠΊΠ°ΠΊ объяснСно Π½ΠΈΠΆΠ΅). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° оканчиваСтся Π² самой ΠΏΡ€Π°Π²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ поля. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: %-10d строка Ρ†ΠΈΡ„Ρ€ Π—Π°Π΄Π°Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ поля. Π‘ΠΎΠ»ΡŒΡˆΠ΅Π΅ ΠΏΠΎΠ»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ссли ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΠΎΠ΅ число ΠΈΠ»ΠΈ строка Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² исходном ΠΏΠΎΠ»Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: %4d строка Ρ†ΠΈΡ„Ρ€ ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ: для Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ - число ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹Ρ… Ρ†ΠΈΡ„Ρ€ справа ΠΎΡ‚ дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΈ; для ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строк - максимальноС число ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹Ρ… символов ΠŸΡ€ΠΈΠΌΠ΅Ρ€: %4.2f (Π΄Π²Π΅ дСсятичныС Ρ†ΠΈΡ„Ρ€Ρ‹ для поля ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ символа) | Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ long, Π° Π½Π΅ int. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: %|d

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ эти ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. НачнСм с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ продСмонстрируСм влияниС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΡˆΠΈΡ€ΠΈΠ½Ρ‹ поля Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

main( )

{

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

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

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

  printf("/%-10d/\n", 366);

}

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

/336/ /336/

/      336 /336       /

     ΠŸΠ΅Ρ€Π²Π°Ρ спСцификация прСобразования %d Π½Π΅ содСрТит ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ². ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ здСсь ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ, Ρ€Π°Π²Π½ΡƒΡŽ количСству Ρ†ΠΈΡ„Ρ€ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ "ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ", Ρ‚. Π΅. Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ дСйствия компилятора Π² случаС, Ссли Π²Ρ‹ Π½Π΅ Π΄Π°Π»ΠΈ Π΅ΠΌΡƒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструкций. Вторая спСцификация прСобразования - %2d. Она ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡˆΠΈΡ€ΠΈΠ½Π° поля Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π²Π½ΡΡ‚ΡŒΡΡ 2, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ число состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ†ΠΈΡ„Ρ€, Π΄ΠΎΠ»Π΅ автоматичСски Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ Π΄ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ спСцификация %10d ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡˆΠΈΡ€ΠΈΠ½Π° поля Ρ€Π°Π²Π½Π° 10. И Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠ΅ΠΆΠ΄Ρƒ символами / имССтся сСмь ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ Ρ‚Ρ€ΠΈ Ρ†ΠΈΡ„Ρ€Ρ‹, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ число сдвинуто ΠΊ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ поля. ПослСдняя спСцификация %-10d Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ поля, Ρ€Π°Π²Π½ΡƒΡŽ 10, Π° Π·Π½Π°ΠΊ - ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сдвигу всСго числа ΠΊ Π»Π΅Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Когда Π²Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ½Π΅Ρ‚Π΅ ΠΊ этой систСмС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠ½Π° покаТСтся Π²Π°ΠΌ простой ΠΈ Π²Ρ‹ сумСeΡ‚Π΅ ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²ΠΈΠ΄ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

     Π Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. Допустим, Ρƒ нас имССтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌa:

main( )

{

            printf(" /%f/\n" , 1234.56);

            printf(" /%e/\n" , 1234.56);

            printf(" /%4.2f/\n" , 1234.56);

            printf(" /%3.1f/\n", 1234.56);

            printf(" /%10.3f/\n" , 1234.56);

            printf(" /%10.3e/\n" , 1234.56);

}

     ΠΠ° этот Ρ€Π°Π· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ

            /1234.560059/

            /1.234560E+03/

            /1234.56/

            /1234.6/

            /   1234.560/

            / 1.234E+03/

     ΠœΡ‹ снова Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚. Π΅. сo спСцификации %f. Π’ этом случаС имССтся Π΄Π²Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, Π·Π½Π°Ρ‡Π΅Π½Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: ΡˆΠΈΡ€ΠΈΠ½Π° поля ΠΈ число Ρ†ΠΈΡ„Ρ€ справа ΠΎΡ‚ дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΈ. Вторая Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Π·Π°Π΄Π°Π΅Ρ‚ ΡˆΠ΅ΡΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€, ΡˆΠΈΡ€ΠΈΠ½Π° поля бСрСтся Ρ‚Π°ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½Π΅ΠΌ ΠΌΠΎΠ³Π»ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ число. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΠΎΠ΅ число нСсколько отличаСтся ΠΎΡ‚ исходного. Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ выводится 10 Ρ†ΠΈΡ„Ρ€, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π² нашСй систСмС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ 6 ΠΈΠ»ΠΈ 7 Ρ†ΠΈΡ„Ρ€.

  

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ исслСдуСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ строк. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

#define BLURB "Π’Ρ‹Π΄Π°ΡŽΡ‰Π΅Π΅ΡΡ исполнСниС"

main( )

{

printf(" /%2s/\n" , BLURB);

printf(" /'%25.s/\n" , BLURB);

printf(" /'%25.5s/\n" , BLURB);

printf(" /% - 25.5s/\n" , BLURB);

}

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

/Π’Ρ‹Π΄Π°ΡŽΡ‰Π΅Π΅ΡΡ исполнСниС!/

/   Π’Ρ‹Π΄Π°ΡŽΡ‰Π΅Π΅ΡΡ исполнСниС!/

/                                Π’Ρ‹Π΄Π°ΡŽ/ /Π’Ρ‹Π΄Π°ΡŽ                                  /

     ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΠ»ΠΈΡΡŒ всС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ символы. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ спСцификация точности ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ число символов, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π½Π° ΠŸΠ•Π§ΠΠ’Π¬. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ .5 Π² спСцификации Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf( ) Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡΡ‚ΡŒ символов.