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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 59

Автор ΠœΡŽΡ€Ρ€Π΅ΠΉ Π₯ΠΈΠ»Π»

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

Π’ языкС Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ порядок вычислСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½Ρ†ΠΈΠΈ. На Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… ΠΎΠ½ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, Π° Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… справа Π½Π°Π»Π΅Π²ΠΎ. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ появлСния ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ константы Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡΠ²Π»ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° int, Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ допустимы ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ константы. Однако конкрСтная рСализация ΠΎΡ‡Π΅Π½ΡŒ сильно зависит ΠΎΡ‚ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ порядок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ символы ΠΏΡ€ΠΈΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ слову, различаСтся ΠΎΡ‚ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΊ машинС.

14. ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ ИзлоТСниС Бинтаксиса

Π­Ρ‚Π° краткая сводка синтаксиса Π‘++ прСдназначаСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ пониманию. Она Π½Π΅ являСтся Ρ‚ΠΎΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠΊΠΎΠΉ языка.

14.1 ВыраТСния

Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: Ρ‚Π΅Ρ€ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ бинарная_опСрация Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ? Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ : Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ список_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

список_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ: Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ список_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ , Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Ρ‚Π΅Ρ€ΠΌ: ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ унарная_опСрация Ρ‚Π΅Ρ€ΠΌ Ρ‚Π΅Ρ€ΠΌ ++ Ρ‚Π΅Ρ€ΠΌ – sizeof Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ sizeof ( имя_Ρ‚ΠΈΠΏΠ° ) ( имя_Ρ‚ΠΈΠΏΠ°) Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ простоС_имя_Ρ‚ΠΈΠΏΠ° ( список_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ) new имя_Ρ‚ΠΈΠΏΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ opt new ( имя_Ρ‚ΠΈΠΏΠ° ) delete Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ delete [ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ] Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: id :: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ константа строка this ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅[ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ] ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ( список_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ opt ) ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.id ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-Β»id

id: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ typedef-имя :: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ typedef-имя :: имя_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ_ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

опСрация: унарная_опСрация бинарная_опСрация ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ_опСрация опСрация_свободной_памяти

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ порядкС:

бинарная_опСрация: ΠΎΠ΄Π½Π° ΠΈΠ· * / % + – Β«β€ž β€œΒ» Β« Β»

== != amp; ^ ! amp; amp; !! опСрация_присваивания

опСрация_присваивания: ΠΎΠ΄Π½Π° ΠΈΠ· = += -= *= /= %= ^= amp;= != »»= ««=

унарная_опСрация: ΠΎΠ΄Π½Π° ΠΈΠ· * amp; + – ~ ! ++ –

ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ_опСрация: ΠΎΠ΄Π½Π° ΠΈΠ· () []

опСрация_свободной_памяти: ΠΎΠ΄Π½Π° ΠΈΠ· new delete

имя_Ρ‚ΠΈΠΏΠ°: спСцификаторы_описания абстрактный_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ

абстрактный_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ: пустой * абстрактный_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ абстрактный_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ( список_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ) абстрактный_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ [ константноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ opt ]

простоС_имя_Ρ‚ΠΈΠΏΠ°: typedef-имя char short int long unsigned float double void


typedef-имя: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

14.2 Описания

описаниС: спСцификаторы_описания opt список_описатСлСй opt ; описаниС_ΠΈΠΌΠ΅Π½ΠΈ asm-описаниС

описаниС_ΠΈΠΌΠ΅Π½ΠΈ: сост ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ; enum ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ;

сост:

class struct union

asm-описаниС: asm ( строка ) ;

спСцификаторы_описания: спСцификатор_описания спСцификаторы_описания opt

спСцификатор_описания: спСцификатор_класса_памяти спСцификатор_Ρ‚ΠΈΠΏΠ° спСцификатор_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ typedef friend

спСцификатор_Ρ‚ΠΈΠΏΠ°: простоС_имя_Ρ‚ΠΈΠΏΠ° спСцификатор_класса спСцификатор_enum услоТнСнный_спСцификатор_Ρ‚ΠΈΠΏΠ° const

спСцификатор_класса_памяти: auto extern register static

спСцификатор_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: inline overload virtual

услоТнСнный_спСцификатор_Ρ‚ΠΈΠΏΠ°: ΠΊΠ»ΡŽΡ‡ typedef-имя ΠΊΠ»ΡŽΡ‡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

ΠΊΠ»ΡŽΡ‡: class struct union enum

список_описатСлСй: ΠΈΠ½ΠΈΡ†-ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ΠΈΠ½ΠΈΡ†-ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ , список_описатСлСй

ΠΈΠ½ΠΈΡ†-ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ: ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ opt

ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ: ΠΎΠΏ_имя ( ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ) * const opt ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ amp; const opt ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ

ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ( список_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ) ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ [ константноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ opt ]

ΠΎΠΏ_имя: простоС_ΠΎΠΏ_имя typedef-имя :: простоС_ΠΎΠΏ_имя

простоС_ΠΎΠΏ_имя: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ typedef-имя ~ typedef-имя имя_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ_ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ имя_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ_прСобразования

имя_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ_ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: operator опСрация

имя_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ_прСобразования operator Ρ‚ΠΈΠΏ

список_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: список_описаний_ΠΏΡ€ΠΌ opt ... opt

список_описаний_ΠΏΡ€ΠΌ: список_описаний_ΠΏΡ€ΠΌ , описаниС_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° описаниС_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

описаниС_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: спСцификаторы_описания ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ = Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ спСцификаторы_описания ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ = константноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ спСцификаторы_описания абстракт_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ = Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ спСцификаторы_описания абстракт_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ = Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

спСцификатор_класса: Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ_класса (* список_Ρ‡Π»Π΅Π½ΠΎΠ² opt *) Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ_класса (* список_Ρ‡Π»Π΅Π½ΠΎΠ² opt public : список_Ρ‡Π»Π΅Π½ΠΎΠ² opt *)

Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ_класса: сост ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ opt сост ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ opt : public opt typedef-имя

список_Ρ‡Π»Π΅Π½ΠΎΠ²: описаниС_Ρ‡Π»Π΅Π½Π° список_Ρ‡Π»Π΅Π½ΠΎΠ² opt

описаниС_Ρ‡Π»Π΅Π½Π°: спСцификаторы_описания opt ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ_Ρ‡Π»Π΅Π½Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ opt ; ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ opt

ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ_Ρ‡Π»Π΅Π½Π°: ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ opt : константноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€: = Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ = (* список_ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² *) = (* список_ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² , *) ( список_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ )


список_ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ²: Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ список_ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² , список_ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² (* список_ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² *)

спСцификатор_enum: enum ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ opt (* enum-список *)

enum-список: ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ enum-список , ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ

ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ = константноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

14.3 ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

составной_ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€: (* список_ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² opt *)

список_ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ список_ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€: описаниС составной_ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ opt ; if ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ else ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ while ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ do ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ while ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ; for ( ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ opt ; Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ opt ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ case константноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ : ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ default : ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break ; continue ; return Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ opt ; goto ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ; ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ : ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

14.4 Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ опрСдСлСния

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°: внСшнСС_ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ внСшнСС_ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

внСшнСС_ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ описаниС

ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: спСцификаторы_описания opt ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€_Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ opt Ρ‚Π΅Π»ΠΎ_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ


ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ( список_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² )

Ρ‚Π΅Π»ΠΎ_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: составной_ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€_Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ: : ( список_ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ²_Ρ‡Π»Π΅Π½ΠΎΠ² opt )

14.5 ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€

#define ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ строка_лСксСм

#define ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€( ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€,...,ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ) строка лСксСм #else #endif #if Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ #ifdef ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ #ifndef ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ #include «имя_Ρ„Π°ΠΉΠ»Π°Β» #include «имя_Ρ„Π°ΠΉΠ»Π°Β» #line константа «имя_Ρ„Π°ΠΉΠ»Π°Β» #undef ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

15. ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ ΠΎΡ‚ C


15.1 Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

Π’ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ (#8.4) ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ (#7.1). ΠœΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ прСобразования Ρ‚ΠΈΠΏΠΎΠ² (# 7.1).

Для Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π°Ρ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ° ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ точности; #6.2.

ИмСна Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹; #8.9.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹; 7.16, #8.5.11.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ inline-подставляСмыми; #8.1.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ константными (const); #8.3.

ΠœΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ описаны ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ссылочного Ρ‚ΠΈΠΏΠ°; #8.4, #8.6.3

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ new ΠΈ delete ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ свободноС Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² памяти, #7.2.

ΠšΠ»Π°ΡΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ сокрытиС Π΄Π°Π½Π½Ρ‹Ρ… (#8.5.9), Π³Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ (#8.6.2), опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Ρ‚Π΅Π»Π΅ΠΌ прСобразвания (#8.5.6), ΠΈ динамичСскоС Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· использованиС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (#8.5.4).

Имя класса ΠΈΠ»ΠΈ пСрСчислСния являСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΈΠΏΠ°; #8.5.


Π›ΡŽΠ±ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ void* Π±Π΅Π· примСнСия привСдСния ΠΊ Ρ‚ΠΈΠΏΡƒ; #7.14.

ОписаниС Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ; #9.14.

МоТно ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ бСзымянныС объСдинСния; #8.5.13.

15.2 Π‘Π²ΠΎΠ΄ΠΊΠ° НСсовмСстимостСй

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ конструкций C допустимы Π² Π‘++ Π±Π΅Π· измСнСния ΠΈΡ… смысла. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ· этого ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов

class const delete friend inline new operator overload public signed this virtual volatile

ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, нСдопустимы.

ОписаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f(); ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ f Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠ°Ρ€ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π² C ΠΆΠ΅ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ f ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ любого Ρ‚ΠΈΠΏΠ°.

Π’ C внСшнСС имя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ нСсколько Ρ€Π°Π·, Π° Π² Π‘+ + ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

ИмСна классов Π² Π‘++ находятся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ пространствС, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°, поэтому конструкции Π²Ρ€ΠΎΠ΄Π΅

int s; struct s (* /* ... */ *); f() (* s = 1; *)

ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚. Однако, для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ явноС использованиС class, struct, union, enum (#8.2) ΠΈΠ»ΠΈ :: (#7.1). НапримСр:

int s; struct s (* /* ... */ *); void f() (*int s; struct s a; *) void g() (* ::s = 1; *)

15.3 Анахронизмы

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

ΠŸΡ€Π΅ΠΆΠ½Π΅Π΅ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ имя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π²Ρ‹Π·ΠΎΠ²Π΅. Π’ этом случаС имя Π±ΡƒΠ΄Π΅Ρ‚ нСявно описано ΠΊΠ°ΠΊ

функция, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ int с Ρ‚ΠΈΠΏΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (...).

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово void ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для указания Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ функция Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ (void) эвивалСнтно ().

ΠœΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ синтаксис опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² C

староС_ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: спСцификаторы_описания opt старый_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ список_описатСлСй Ρ‚Π΅Π»ΠΎ_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ