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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ для ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 24

Автор C. Π‘ΠΎΡ‡ΠΊΠΎΠ²

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ присваивания рассмотрСна Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.4.

ВыраТСния привСдСния Ρ‚ΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ привСдСния Ρ‚ΠΈΠΏΠ° для явного прСобразования Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ скалярного Ρ‚ΠΈΠΏΠ° (Ρ†Π΅Π»ΠΎΠ³ΠΎ, пСрСчислимого, ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅Π³ΠΎ, пустого, указатСля).

Бинтаксис:

(<абстрактноС-имя-Ρ‚ΠΈΠΏΠ°>) <ΠΎΠΏΠ΅Ρ€Π°Π½Π΄>

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ привСдСния Ρ‚ΠΈΠΏΠ° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассматриваСтся Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.7.2. АбстрактныС ΠΈΠΌΠ΅Π½Π° Ρ‚ΠΈΠΏΠΎΠ² описаны Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.8.3.

ΠžΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² языкС Π‘ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ L-выраТСния (Lvalue expressions). L-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ссылаСтся Π½Π° ячСйку памяти ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π² Π»Π΅Π²ΠΎΠΉ части Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ L-выраТСния являСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ: ΠΎΠ½ ссылаСтся Π½Π° ячСйку памяти, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ L-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ссылаСтся Π½Π° ячСйку памяти, адрСс этой ячСйки ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ адрСсации (&). Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ: Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ адрСс Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ поля ΠΈ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ класса памяти register, хотя Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСно.

К L-выраТСниям относятся:

β€” ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†Π΅Π»ΠΎΠ³ΠΎ, ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅Π³ΠΎ, пСрСчислимого Ρ‚ΠΈΠΏΠΎΠ², ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, структур ΠΈ объСдинСний;

β€” индСксныС выраТСния, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π΅ ΠΈΠ· Π½ΠΈΡ…, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ массив;

β€” Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π±ΠΎΡ€Π° элСмСнта, Ссли Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ элСмСнт сам являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· допустимых L-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ;

β€” Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ косвСнной адрСсации, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ массив ΠΈΠ»ΠΈ функция;

β€” L-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² скобках;

β€” Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ привСдСния Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ссли Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ этот случай:

char *Ρ€;

int i;

long n;

(long *)p = &n; /* допустимоС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° */

(long)i = n; /* нСдопустимоС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° */

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ L-выраТСния Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ L-выраТСниями. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ L-выраТСния; ΠΈΡ… адрСс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π»Π΅Π²ΠΎΠΉ части Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚. К Π½ΠΈΠΌ относятся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ массивов, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ const.

Π‘ΠΊΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ выраТСния

Π›ΡŽΠ±ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки. Π’ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ

(10+5)/5

скобки ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 10+5 являСтся Π»Π΅Π²Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ дСлСния. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выраТСния Ρ€Π°Π²Π΅Π½ 3. Π’ отсутствиС скобок Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния Ρ€Π°Π²Π½ΡΠ»ΠΎΡΡŒ Π±Ρ‹ 11. Π₯отя скобки Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡƒΡ‚Π΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΎΠ½ΠΈ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ порядок вычислСния ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΡ… свойством коммутативности (ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½Ρ‹Π΅, Π°Π΄Π΄ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅, поразрядныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ). НапримСр, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (Π°+b)+с компилятор ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π°+(b+с) ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΠ°ΠΊ (Π°+с)+b.

Π’ БП Π’Π‘ ΠΌΠΎΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ порядок вычислСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² скобках для ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡƒΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ плюса.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹Π΅ выраТСния

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ β€” это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вычислСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся константа. ΠžΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ константного выраТСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅, ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅, ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠ΅ константы, константы пСрСчислимого Ρ‚ΠΈΠΏΠ°, выраТСния привСдСния Ρ‚ΠΈΠΏΠ° константного выраТСния, выраТСния с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ sizeof ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ константныС выраТСния. Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния Π½Π° использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² константных выраТСниях. Π’ константных выраТСниях нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ вычислСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ адрСсации, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ привСдСния Ρ‚ΠΈΠΏΠ° ΠΈ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΡ… констант ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹Π΅ выраТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ… прСпроцСссора, ΠΈΠΌΠ΅ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ограничСния, поэтому ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ константными выраТСниями. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ константныС выраТСния Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ sizeof (Π² БП Π’Π‘ β€” ΠΌΠΎΠ³ΡƒΡ‚), констант пСрСчислСния ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ привСдСния Ρ‚ΠΈΠΏΠ° ΠΈ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΡ… констант. Однако ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ константныС выраТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ… прСпроцСссора, ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ константныС выраТСния defined (<ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€>), описанныС Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 7.2.1 "Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define". . Волько выраТСния ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΡ… констант, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ привСдСния Ρ‚ΠΈΠΏΠ° ΠΊ нСарифмСтичСским Ρ‚ΠΈΠΏΠ°ΠΌ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ адрСсации. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ адрСсации ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ внСшнСго уровня Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ структурного Ρ‚ΠΈΠΏΠ°, ΠΊ объСдинСнию, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊ элСмСнту массива. Π’ этих выраТСниях допускаСтся слоТСниС ΠΈΠ»ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ адрСсного выраТСния с константным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π½Π΅ содСрТащим ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ адрСсации.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² языкС Π‘ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π»ΠΈΠ±ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ (ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ), Π»ΠΈΠ±ΠΎ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ), Π»ΠΈΠ±ΠΎ Ρ‚Ρ€ΠΈ (тСрнарная опСрация). ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ присваивания ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡƒΠ½Π°Ρ€Π½ΠΎΠΉ, Ρ‚Π°ΠΊ ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ (см. Ρ€Π°Π·Π΄Π΅Π» 4.4).

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

b << 2 << 2

выполняСтся ΠΊΠ°ΠΊ (b << 2) << 2, Π° Π½Π΅ ΠΊΠ°ΠΊ b << (2 << 2). ΠΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ "справа Π½Π°Π»Π΅Π²ΠΎ" ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ опСрация, Π·Π½Π°ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ записан ΠΏΡ€Π°Π²Π΅Π΅ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ….

Π’ языкС Π‘ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

Π—Π½Π°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ НаимСнованиС - ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ минус + ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ плюс ~ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ! логичСскоС ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ & адрСсация * косвСнная адрСсация sizeof ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΡƒΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ плюса Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² БП Π’Π‘. Π’ БП MSC вСрсии 4 ΠΎΠ½Π° отсутствуСт, Π° Π² вСрсии 5 Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ синтаксичСски.

Π£Π½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‚ своСму ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρƒ ΠΈ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ΡΡ справа Π½Π°Π»Π΅Π²ΠΎ.

Π’ языкС Π‘ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

Π—Π½Π°ΠΊ НаимСнованиС * / % ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ + - Π°Π΄Π΄ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ << >> ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига < > <= >= == != ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ & | ^ поразрядныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ && || логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ , опСрация ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ вычислСния

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ΡΡ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ. Π’ языкС Π‘ΠΈ имССтся ΠΎΠ΄Π½Π° тСрнарная опСрация β€” условная, обозначаСмая ?:. Она ассоциируСтся справа Π½Π°Π»Π΅Π²ΠΎ.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ языка Π‘ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² для привСдСния своих ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π»ΠΈΠ±ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ значСния ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ‚ΠΈΠΏΠΎΠ² Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… опСрациях. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ, зависящиС ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ²), рассмотрСны Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.7. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ прСобразования Ρ†Π΅Π»Ρ‹Ρ… ΠΈ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ². Π­Ρ‚ΠΈ прСобразования Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π°Π»Π΅Π΅ прСобразованиями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

1) ВсС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Ρ‚ΠΈΠΏΠ° float ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ double.

2) Волько для БП Π’Π‘: Ссли ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ long double, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Ρ‚Π°ΠΊΠΆΠ΅ прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ long double.

3) Если ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ double, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ double.

4) Если ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ unsigned long, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ unsigned long.

5) Если ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ long, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ long.

6) Если ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ unsigned int, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ unsigned int.

7) ВсС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² char ΠΈΠ»ΠΈ short ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ int.

8) ВсС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² unsigned char ΠΈΠ»ΠΈ unsigned short ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ unsigned int.

9) Π˜Π½Π°Ρ‡Π΅ ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ int.