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

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

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

Вакая интСрпрСтация ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ void * - новая; Ρ€Π°Π½Π΅Π΅ Ρ€ΠΎΠ»ΡŒ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ указатСля ΠΎΡ‚Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Ρ‚ΠΈΠΏΠ° char *. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ ANSI ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ использованиС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ void * совмСстно с указатСлями Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π² присваиваниях ΠΈ сравнСниях; Π² ΠΈΠ½Ρ‹Ρ… комбинациях ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ стандарт Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явных ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ°.

A7. ВыраТСния

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ описываСмых ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ порядок, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π° (ΠΎΡ‚ Π²Ρ‹ΡΡˆΠΈΡ… ΠΊ низшим). НапримСр, для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° +, описанного Π² A7.7, Ρ‚Π΅Ρ€ΠΌΠΈΠ½ "ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹" ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ "выраТСния, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² A7.1-A7.6". Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, ΠΈ указываСтся ΠΈΡ… Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ (лСвая ΠΈΠ»ΠΈ правая). ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ ΠΈ Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ всСх ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π² Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π² A13.

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

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

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

A7.1. ГСнСрация указатСля 

Если Ρ‚ΠΈΠΏ выраТСния ΠΈΠ»ΠΈ подвыраТСния Π΅ΡΡ‚ΡŒ "массив ΠΈΠ· T", Π³Π΄Π΅ T - Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ этого выраТСния являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива, ΠΈ Ρ‚ΠΈΠΏ Ρ‚Π°ΠΊΠΎΠ³ΠΎ выраТСния замСняСтся Π½Π° Ρ‚ΠΈΠΏ "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° T". Вакая Π·Π°ΠΌΠ΅Π½Π° Π½Π΅ дСлаСтся, Ссли Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ являСтся ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ ΡƒΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° amp;, ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ++, --, sizeof, ΠΈΠ»ΠΈ Π»Π΅Π²Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ присваивания, ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° . (Ρ‚ΠΎΡ‡ΠΊΠ°). Аналогично, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° "функция, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ Π’", ΠΊΡ€ΠΎΠΌΠ΅ случая, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ являСтся ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ для&, прСобразуСтся Π² Ρ‚ΠΈΠΏ "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ T".

A7.2. ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ выраТСния

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ выраТСния это ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, константы, строки ΠΈ выраТСния Π² скобках.

ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅ - Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

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

    константа

    строка

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

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Ссли ΠΎΠ½ Π±Ρ‹Π» Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ объявлСн (ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ это дСлаСтся, Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π½ΠΈΠΆΠ΅), - ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° спСцифицируСтся Π² Π΅Π³ΠΎ объявлСнии. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π΅ΡΡ‚ΡŒ lvalue, Ссли ΠΎΠ½ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (A5) арифмСтичСского Ρ‚ΠΈΠΏΠ°, Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° "структура", "объСдинСниС" ΠΈΠ»ΠΈ "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ".

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° - ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π•Π΅ Ρ‚ΠΈΠΏ зависит ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΡ‹ записи, которая Π±Ρ‹Π»Π° рассмотрСна Π² A2.5.

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π» - ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ - "массив ΠΈΠ· char" ("массив ΠΈΠ· wchar_t" для строки символов Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π°), Π½ΠΎ Π² соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π² A7.1, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прСвращаСтся Π² "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° char" ("ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° wchar_t") с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ строки". Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² такая Π·Π°ΠΌΠ΅Π½Π° Ρ‚ΠΈΠΏΠ° Π½Π΅ дСлаСтся. (см. A8.7)

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² скобках - ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΈΠΏ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ Ρ‚ΠΈΠΏΡƒ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ этого ΠΆΠ΅ выраТСния Π±Π΅Π· скобок. НаличиС ΠΈΠ»ΠΈ отсутствиС скобок Π½Π΅ влияСт Π½Π° Ρ‚ΠΎ, являСтся Π»ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ lvalue ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

A7.3. ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½Ρ‹Π΅ выраТСния

Π’ постфиксных выраТСниях ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ.

постфиксноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

    ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

    постфиксноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ [Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅]

    постфиксноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (список-Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉΠ½Π΅ΠΎΠ±)

    постфиксноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

    постфиксноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅->ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

    постфиксноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ++

    постфиксноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ --

список-Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

    Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-присваиваниС

    список-Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ , Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-присваиваниС

A7.3.1. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ элСмСнтам массива

ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках, Π΅ΡΡ‚ΡŒ постфиксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ индСксируСмому массиву. Одно ΠΈΠ· этих Π΄Π²ΡƒΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡƒ "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° T", Π³Π΄Π΅ T - Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ - цСлочислСнному Ρ‚ΠΈΠΏΡƒ; Ρ‚ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° индСксирования Π΅ΡΡ‚ΡŒ T. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ E1[E2] ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ *((E1)+(E2)). ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ см. Π² A8.6.

A7.3.2. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

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

extern int identifier();

ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΌ Π² самом Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅, содСрТащСм Π²Ρ‹Π·ΠΎΠ² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (послС, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ нСявного, описания ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ указатСля, см. A7.1) Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ T", Π³Π΄Π΅ T - Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния.

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

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

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

Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π° способа объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ Π½ΠΎΠ²ΠΎΠΌ способС Ρ‚ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π·Π°Π΄Π°ΡŽΡ‚ΡΡ явно ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ‚ΠΈΠΏΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ; Ρ‚Π°ΠΊΠΎΠ΅ объявлСниС называСтся ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΠΈ старом способС Ρ‚ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ. Бпособы объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² A8.6.3 ΠΈ A10.1.

Если Π²Ρ‹Π·ΠΎΠ² находится Π² области видимости объявлСния, написанного ΠΏΠΎ-старому, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ подвСргаСтся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠ°: для цСлочислСнных Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² осущСствляСтся цСлочислСнноС ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ (A6.1), Π° для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° float - ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² double. Если число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅ соотвСтствуСт количСству ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Ссли Ρ‚ΠΈΠΏΡ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² послС ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΡƒΡŽΡ‚ΡΡ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½. ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ согласованности Ρ‚ΠΈΠΏΠΎΠ² зависит ΠΎΡ‚ способа опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (старого ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ). ΠŸΡ€ΠΈ старом способС ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°; ΠΏΡ€ΠΈ Π½ΠΎΠ²ΠΎΠΌ способС ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Ρ‚ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (Π±Π΅Π· Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ.