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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ. ИзданиС 3-Π΅, исправлСнноС». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 65

Автор Π‘Ρ€Π°ΠΉΠ°Π½ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ switch выполняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ВычисляСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ со всСми ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌΠΈ эффСктами, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сравниваСтся с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ case-константой. Если ΠΎΠ΄Π½Π° ΠΈΠ· case-констант Ρ€Π°Π²Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ выраТСния, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ case-ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ. Если Π½ΠΈ с ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· case-констант Π½Π΅Ρ‚ совпадСния, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся Π½Π° ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ с default-ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ, Ссли такая имССтся, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· подинструкций switch Π½Π΅ выполняСтся.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии языка Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ case-константы Π² switch Π±Ρ‹Π»ΠΈ Ρ‚ΠΈΠΏΠ° int.

A9.5. ЦикличСскиС инструкции

ЦикличСскиС инструкции ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ Ρ†ΠΈΠΊΠ»Ρ‹.

цикличСская-инструкция:

    while (Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅) инструкция

    do инструкция while (Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅)

    for (Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Π½Π΅ΠΎΠ± ; Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Π½Π΅ΠΎΠ± ; Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Π½Π΅ΠΎΠ± ) инструкция

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

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

for ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 ; Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 ; Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Π— ) инструкция

эквивалСнтно конструкции

Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1;

    while (Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2) {

        инструкция

        Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Π—;

}

Π›ΡŽΠ±ΠΎΠ΅ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ. БчитаСтся, Ρ‡Ρ‚ΠΎ отсутствиС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ выраТСния Ρ€Π°Π²Π½ΠΎΡΠΈΠ»ΡŒΠ½ΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π½ΡƒΠ»Π΅ΠΌ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠΉ константы.

A9.6. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ Π±Π΅Π·ΡƒΡΠ»ΠΎΠ²Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ управлСния.

инструкция-ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°:

    goto ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ;

    continue ;

    break ;

    return Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Π½Π΅ΠΎΠ± ;

Π’ goto-инструкции ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ (A9.1), располоТСнной Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся Π½Π° ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ continue ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. Она Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ самого Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ содСрТащСго Π΅Π΅ Ρ†ΠΈΠΊΠ»Π°. Говоря Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· конструкций

while (...){

    ...

contin: ;

}


do {

    ...

contin: ;

} while (...);


for (...){

    ...

contin: ;

}

инструкция continue, Ссли ΠΎΠ½Π° Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π° Π² Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ», Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ goto contin.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ break встрСчаСтся Π² цикличСской ΠΈΠ»ΠΈ Π² switch-инструкции, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½ΠΈΡ…. Она Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ самой Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ цикличСской ΠΈΠ»ΠΈ switch- инструкции, содСрТащСй Π΄Π°Π½Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ break, послС Ρ‡Π΅Π³ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ инструкции.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ return функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π°. Если Π·Π° return слСдуСт Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ возвращаСтся Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅ΠΉ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния приводится ΠΊ Ρ‚ΠΈΠΏΡƒ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ, Ρ‡Ρ‚ΠΎ ΠΈ функция.

Битуация, ΠΊΠΎΠ³Π΄Π° "ΠΏΡƒΡ‚ΡŒ" вычислСний ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‚. Π΅. Π½Π° послСднюю Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Π½ΡƒΡŽ скобку), Ρ€Π°Π²Π½ΠΎΡΠΈΠ»ΡŒΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ return- инструкции Π±Π΅Π· выраТСния. ΠŸΡ€ΠΈ этом, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² случаС явного задания return Π±Π΅Π· выраТСния Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ

А10. Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ объявлСния

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

Π΅Π΄ΠΈΠ½ΠΈΡ†Π°-трансляции:

    внСшнСС-объявлСниС

    Π΅Π΄ΠΈΠ½ΠΈΡ†Π°-трансляции внСшнСС-объявлСниС

внСшнСС-объявлСниС:

    ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

    объявлСниС

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости Π²Π½Π΅ΡˆΠ½ΠΈΡ… объявлСний простираСтся Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ трансляции, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости объявлСний Π² Π±Π»ΠΎΠΊΠ΅ распространяСтся Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° этого Π±Π»ΠΎΠΊΠ°. Бинтаксис внСшнСго объявлСния Π½Π΅ отличаСтся ΠΎΡ‚ синтаксиса любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ объявлСния Π·Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ: ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ внСшнСго объявлСния.

A10.1. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ


ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

    спСцификаторы-объявлСниянСоб ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ список-объявлСнийнСоб

    составная-инструкция

Из спСцификаторов класса памяти Π² спСцификаторах-ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ extern ΠΈ static; различия ΠΌΠ΅ΠΆΠ΄Ρƒ послСдними Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² A11.2.

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

собствСнно-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ ( список-Ρ‚ΠΈΠΏΠΎΠ²-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² )

собствСнно-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ ( список-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²Π½Π΅ΠΎΠ± )

Π³Π΄Π΅ собствСнно-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ Π΅ΡΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² скобки. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ "функция" посрСдством typedef ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ нСльзя.

ΠŸΠ΅Ρ€Π²Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° соотвСтствуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΠΎΠ²Ρ‹ΠΌ способом, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ объявлСниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² спискС-Ρ‚ΠΈΠΏΠΎΠ²-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² вмСстС с ΠΈΡ… Ρ‚ΠΈΠΏΠ°ΠΌΠΈ; Π·Π° ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Π΅ΠΌ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ списка-объявлСний. Если список-Ρ‚ΠΈΠΏΠΎΠ²-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π΅ состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ-СдинствСнного слова void, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅Ρ‚, Ρ‚ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Π΅ Π² спискС-Ρ‚ΠΈΠΏΠΎΠ²-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² обязан ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Если список-Ρ‚ΠΈΠΏΠΎΠ²-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² заканчиваСтся Π·Π½Π°ΠΊΠ°ΠΌΠΈ ", ...", Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² большС, Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²; Π² Ρ‚Π°ΠΊΠΎΠΌ случаС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ, слСдуСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ макроса va_arg ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° <stdarg.h>, описанного Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ B. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ числом Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

Вторая Ρ„ΠΎΡ€ΠΌΠ° - ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ старым способом. Бписок-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² содСрТит ΠΈΠΌΠ΅Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π° список-объявлСний приписываСт ΠΈΠΌ Ρ‚ΠΈΠΏΡ‹. Π’ спискС- объявлСнии Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, инициализация запрСщаСтся, ΠΈ ΠΈΠ· спСцификаторов класса памяти Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ register.

И Π² Ρ‚ΠΎΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΌ способС опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ мыслится, Ρ‡Ρ‚ΠΎ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°ΠΊ Π±Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² самом Π½Π°Ρ‡Π°Π»Π΅ составной инструкции, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ с Π½ΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π° здСсь ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ (хотя, ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π² Π±ΠΎΠ»Π΅Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π±Π»ΠΎΠΊΠ°Ρ…). ОбъявлСниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° "массив ΠΈΠ· Ρ‚ΠΈΠΏΠ°" ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚ΠΈΠΏ", Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ объявлСнию ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° объявлСниС "функция, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ Ρ‚ΠΈΠΏ" ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ Ρ‚ΠΈΠΏ". Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ (см. A7.3.2).

Новый способ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π²Π΅Π΄Π΅Π½ ANSI-стандартом. Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ нСбольшиС измСнСния Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠ°; Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии языка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚ΠΈΠΏΠ° float слСдовало Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ double. Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ float ΠΈ double ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ, лишь ΠΊΠΎΠ³Π΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ гСнСрировался ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.