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

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

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

ΠŸΡ€ΠΈ присваивании Ρ‚ΠΈΠΏ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° этого прСобразования зависит ΠΎΡ‚ ΠΎΠ±ΠΎΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описана Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.7.1. Π›Π΅Π²Ρ‹ΠΉ (ΠΈΠ»ΠΈ СдинствСнный) ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ L-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ (см. Ρ€Π°Π·Π΄Π΅Π» 4.2.7).

Π’Π°ΠΆΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ присваивания Π² языкС Π‘ΠΈ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² присваивания Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² языкС Π‘ΠΈ опСрация присваивания Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано Π΄Π°Π»Π΅Π΅ Π² вычислСнии выраТСния.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΈ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ++ ΠΈ -- ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ (ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ) ΠΈ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ (ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ) свой ΠΎΠΏΠ΅Ρ€Π°Π½Π΄. ΠžΠΏΠ΅Ρ€Π°Π½Π΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ, ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ. Π’ качСствС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° допустимо Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ L-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

ΠžΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Ρ†Π΅Π»ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ΡΡ Π½Π° Ρ†Π΅Π»ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. Над ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ Π½Π΅ производятся прСобразования ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° соотвСтствуСт Ρ‚ΠΈΠΏΡƒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°. ΠžΠΏΠ΅Ρ€Π°Π½Π΄ Ρ‚ΠΈΠΏΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ инкрСмСнтируСтся ΠΈΠ»ΠΈ дСкрСмСнтируСтся Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ адрСсуСт, ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, описанным Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.3.4. Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ адрСсуСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π° Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒβ€”ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΈ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄ своим ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ (прСфиксная Ρ„ΠΎΡ€ΠΌΠ° записи), Ρ‚Π°ΠΊ ΠΈ послС Π½Π΅Π³ΠΎ (постфиксная Ρ„ΠΎΡ€ΠΌΠ° записи). Для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² прСфиксной Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ сначала инкрСмСнтируСтся ΠΈΠ»ΠΈ дСкрСмСнтируСтся, Π° Π·Π°Ρ‚Π΅ΠΌ Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ участвуСт Π² дальнСйшСм вычислСнии выраТСния, содСрТащСго Π΄Π°Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. Для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² постфиксной Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ инкрСмСнтируСтся лишь послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ участвуСт Π² вычислСнии выраТСния. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΈ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° являСтся Π»ΠΈΠ±ΠΎ Π½ΠΎΠ²ΠΎΠ΅, Π»ΠΈΠ±ΠΎ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.

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

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 */

if(pos++ > 0) *p++ = *q++;

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 */

if(line[--i] != '\n') return;

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная pos провСряСтся Π½Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ инкрСмСнтируСтся. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ pos Π΄ΠΎ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ выполняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Π’ Π½Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎΠ΅ q, заносится ΠΏΠΎ адрСсу, содСрТащСмуся Π² Ρ€. ПослС этого Ρ€ ΠΈ q ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная i дСкрСмСнтируСтся ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π΅ использованиСм Π² качСствС индСкса массива line.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ присваиваниС

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ простого присваивания обозначаСтся Π·Π½Π°ΠΊΠΎΠΌ =. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° присваиваСтся Π»Π΅Π²ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρƒ. Π›Π΅Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ L-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠŸΡ€ΠΈ присваивании Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π° прСобразования Ρ‚ΠΈΠΏΠΎΠ², описанныС Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.7.1.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π°Π»Π΅Π΅ использован Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ являСтся присвоСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° β€” Ρ‚ΠΈΠΏ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1:

double Ρ…;

int Ρƒ;

Ρ… = Ρƒ; Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρƒ прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ double ΠΈ присваиваСтся Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2:

int а, b, с; b = 2; a = b + (с = 5);

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π° β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ b + 5, Ρ€Π°Π²Π½ΠΎΠ΅ 7.

БоставноС присваиваниС

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ составного присваивания состоит ΠΈΠ· простой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания, скомбинированной с ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΡ€ΠΈ составном присваивании Π²Π½Π°Ρ‡Π°Π»Π΅ выполняСтся дСйствиС, спСцифицированноС Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ присваиваСтся Π»Π΅Π²ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρƒ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ составного присваивания со слоТСниСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

<Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1> += <Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2>

Оно ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записано ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

<Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1> = <Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1> + <Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2>

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ вырабатываСтся ΠΏΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ простого присваивания. Однако Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ составного присваивания Π½Π΅ эквивалСнтно ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ записи, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ составного присваивания <Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1> вычисляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ записи ΠΎΠ½ΠΎ вычисляСтся Π΄Π²Π°ΠΆΠ΄Ρ‹: Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слоТСния ΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания. НапримСр, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

*str1.str2.ptr += 5;

Π»Π΅Π³Ρ‡Π΅ для понимания ΠΈ выполняСтся быстрСС, Ρ‡Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

*str1.str2.ptr = *str1.str2.ptr + 5;

ИспользованиС составных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ присваивания ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. КаТдая опСрация составного присваивания выполняСт прСобразования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ входящСй Π² Π΅Π΅ состав Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, ΠΈ соотвСтствСнно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏΡ‹ своих ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ составного присваивания являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, присвоСнноС Π»Π΅Π²ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρƒ. Π’ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° β€” Ρ‚ΠΈΠΏ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

n &= 0xFFFE;

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ опСрация поразрядноС И выполняСтся Π½Π°Π΄ n ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ FFFE, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ присваиваСтся n.

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΈ порядок выполнСния

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

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 4.1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² порядкС убывания ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, располоТСнныС Π² ΠΎΠ΄Π½ΠΎΠΉ строкС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄Π½Ρƒ Π³Ρ€ΡƒΠΏΠΏΡƒ, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ.

Π’Π°Π±Π»ΠΈΡ†Π° 4.1.

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΈ Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² языкС Π‘ΠΈ Π—Π½Π°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ НаимСнованиС ΠΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ () [] . -> ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ + - ~ ! * & ++ -- sizeof ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π£Π½Π°Ρ€Π½Ρ‹Π΅ Π‘ΠΏΡ€Π°Π²Π° Π½Π°Π»Π΅Π²ΠΎ * / % ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ + - АддитивныС Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ >> << Π‘Π΄Π²ΠΈΠ³ Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ < > <= >= ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ == != ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ & ΠŸΠΎΡ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΠ΅ И Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ ^ ΠŸΠΎΡ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π˜Π›Π˜ Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ | ΠŸΠΎΡ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π˜Π›Π˜ Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ && ЛогичСскоС И Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ || ЛогичСскоС Π˜Π›Π˜ Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ ?: Условная Π‘ΠΏΡ€Π°Π²Π° Π½Π°Π»Π΅Π²ΠΎ = *= /= %= += -= <<= >>= &= |= ^= ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ ΠΈ составноС присваиваниС Π‘ΠΏΡ€Π°Π²Π° Π½Π°Π»Π΅Π²ΠΎ , ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ вычислСниС Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ

Из Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 4.1. слСдуСт, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, индСксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π±ΠΎΡ€Π° элСмСнта ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² скобках, ΠΈΠΌΠ΅ΡŽΡ‚ наибольший ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΈ Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΈ порядок выполнСния, Ρ‡Ρ‚ΠΎ ΠΈ ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°. Когда нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ уровня ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² соотвСтствии с ΠΈΡ… Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ β€” Π»ΠΈΠ±ΠΎ справа Π½Π°Π»Π΅Π²ΠΎ, Π»ΠΈΠ±ΠΎ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ.

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

Π° = b & 0xFF + 5

вычисляСтся ΠΊΠ°ΠΊ

Π° = b & (0xFF + 5),

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

а +с >> 1

вычисляСтся ΠΊΠ°ΠΊ

(а + с) >> 1

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

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