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

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

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

A7.13. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Π˜Π›Π˜

Π˜Π›Π˜ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

    ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅-Π˜Π›Π˜-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

    Π˜Π›Π˜-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ | ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅-Π˜Π›Π˜-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ арифмСтичСскиС прСобразования; Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ - ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ OR ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ примСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ цСлочислСнным ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌ.

A7.14. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ логичСского И

логичСскоС-И-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

    Π˜Π›Π˜-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

    логичСскоС-И-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ && Π˜Π›Π˜-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ && Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ && Π²Ρ‹Π΄Π°Π΅Ρ‚ 1, Ссли ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π½Π΅ Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ, ΠΈ 0 Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ &, && Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ вычислСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ: вычисляСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ со всСми ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌΠΈ эффСктами; Ссли ΠΎΠ½ Ρ€Π°Π²Π΅Π½ 0, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния Π΅ΡΡ‚ΡŒ 0. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС вычисляСтся ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, ΠΈ, Ссли ΠΎΠ½ Ρ€Π°Π½Π΅Π½ 0, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния Π΅ΡΡ‚ΡŒ 0, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ΠΎ Ρ€Π°Π²Π½ΠΎ 1.

ΠžΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ арифмСтичСский Ρ‚ΠΈΠΏ, Π»ΠΈΠ±ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ. Π’ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° - int.

A7.15. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ логичСского Π˜Π›Π˜

логичСскоС-Π˜Π›Π˜-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

    логичСскоС-И-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

    логичСскоС-Π˜Π›Π˜-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ || логичСскоС-И-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ || Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ || Π²Ρ‹Π΄Π°Π΅Ρ‚ 1, Ссли ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π½Π΅ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ, ΠΈ 0 Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ |, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ || Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ вычислСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ: вычисляСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ всС ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты; Ссли ΠΎΠ½ Π½Π΅ Ρ€Π°Π²Π΅Π½ 0, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния Π΅ΡΡ‚ΡŒ 1. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС вычисляСтся ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, ΠΈ Ссли ΠΎΠ½ Π½Π΅ Ρ€Π°Π²Π΅Π½ 0, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния Π΅ΡΡ‚ΡŒ 1, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ΠΎ Ρ€Π°Π²Π½ΠΎ 0.

ΠžΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ, Π½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ арифмСтичСский Ρ‚ΠΈΠΏ, Π»ΠΈΠ±ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ. Π’ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° - int.

А7.16. Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

условноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

    логичСскоС-Π˜Π›Π˜-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

    логичСскоС-Π˜Π›Π˜-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ? Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ : условноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

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

ΠŸΡ€ΠΈ сравнСнии Ρ‚ΠΈΠΏΠΎΠ² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² (A8.2) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ, Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ, Π½ΠΎ Ρ‚ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° наслСдуСт ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±Π΅ΠΈΡ… Π²Π΅Ρ‚Π²Π΅ΠΉ условного выраТСния

A7.17. ВыраТСния присваивания

БущСствуСт нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² присваивания; ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ справа Π½Π°Π»Π΅Π²ΠΎ.

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

    условноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

    ΡƒΠ½Π°Ρ€Π½ΠΎΠ΅-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€-присваивания Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-присваивания

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€-присваивания: ΠΎΠ΄ΠΈΠ½ ΠΈΠ·

    =

    *=

    /=

    %=

    +=

    -=

    <<=

    >>=

    &=

    ^=

    |=

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ присваивания Π² качСствС Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ lvalue, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ; это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ массивом, ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, ΠΈΠ»ΠΈ Π±Ρ‹Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. Π’ΠΈΠΏ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° const; ΠΈ, Ссли ΠΎΠ½ являСтся структурой ΠΈΠ»ΠΈ объСдинСниСм, Π² Π½ΠΈΡ… Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ элСмСнтов ΠΈΠ»ΠΈ подэлСмСнтов (для Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… структур ΠΈΠ»ΠΈ объСдинСний) с ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ const.

Π’ΠΈΠΏ выраТСния присваивания соотвСтствуСт Ρ‚ΠΈΠΏΡƒ Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ присваивания.

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

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ E1 op= E2 эквивалСнтно Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ E1 = E1 op(E2) с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ: E1 вычисляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

A7.18. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ запятая

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

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

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

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

f(a, (t=3, t+2), c)

Ρ‚Ρ€ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5.

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

БинтаксичСски, константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ - это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ подмноТСством ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²:

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

    условноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ case-ΠΌΠ΅Ρ‚ΠΎΠΊ Π² ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅, Π·Π°Π΄Π°Π½ΠΈΠΈ Π³Ρ€Π°Π½ΠΈΡ† массивов ΠΈ Π΄Π»ΠΈΠ½ ΠΏΠΎΠ»Π΅ΠΉ Π±ΠΈΡ‚ΠΎΠ², Π½Π° мСстС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ пСрСчислимых констант ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выраТСниях для прСпроцСссора Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ выраТСния, вычислСниС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ константС.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹Π΅ выраТСния Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ присваиваний, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² инкрСмСнтирования ΠΈ дСкрСмСнтирования, Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²-запятых; пСрСчислСнныС ограничСния Π½Π΅ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° sizeof. Если трСбуСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ цСлочислСнноС константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Ρ†Π΅Π»Ρ‹Ρ…, пСрСчислимых (enum), ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… констант ΠΈ констант с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ; ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ привСдСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ цСлочислСнный Ρ‚ΠΈΠΏ, Π° любая константа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ - ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ. Из этого слСдуСт, Ρ‡Ρ‚ΠΎ Π² константном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ массивов, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ косвСнного обращСния (раскрытия указатСля), получСния адрСса ΠΈ доступа ΠΊ полям структуры. (Однако для sizeof Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ любого Π²ΠΈΠ΄Π°.)

Для константных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°Ρ… допускаСтся большая свобода; ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ константы любого Ρ‚ΠΈΠΏΠ°, Π° ΠΊ внСшним ΠΈΠ»ΠΈ статичСским ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΈ внСшним ΠΈ статичСским массивам, индСксируСмым константными выраТСниями, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ &. Π£Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ & ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ нСявно ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ использовании массива Π±Π΅Π· индСкса ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· списка Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ВычислСниС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄Π°Π²Π°Ρ‚ΡŒ константу ΠΈΠ»ΠΈ адрСс Ρ€Π°Π½Π΅Π΅ объявлСнного внСшнСго ΠΈΠ»ΠΈ статичСского ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° плюс-минус константа.

МСньшая свобода допускаСтся для цСлочислСнных константных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… послС #if: Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ sizeof-выраТСния, константы Ρ‚ΠΈΠΏΠ° enum ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ привСдСния Ρ‚ΠΈΠΏΠ°. (см. A12.5.)

A8. ОбъявлСния

Π’ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ интСрпрСтируСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, спСцифицируСтся объявлСниями; ΠΎΠ½ΠΈ Π½Π΅ всСгда Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ для описываСмых ΠΈΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ². ОбъявлСния, Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ опрСдСлСниями ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄: