рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рд╕рддреНрдп рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ

рд╕реА рдФрд░ рд╕реА ++ рднрд╛рд╖рд╛ рдореЗрдВ "рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░" рд╢рдмреНрдж рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ "рдХреЗрд╡рд▓ рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ"ред рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдкрд┐рдЫрд▓реЗ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ (рдФрд░ рдЙрд╕ рдкрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░) рдиреЗ рдЕрд╕рдВрдЧрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдерд╛, рдХреЛ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдард╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдорд╛рдирдХ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд┐рддрд┐ рдиреЗ рдЕрдкрдиреЗ рдЕрд╕реАрдо рдЬреНрдЮрд╛рди рдореЗрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рддрдп рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рдЕрд░реНрдерд╛рдд, рд╡рд░реАрдпрддрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реЗ рдХреБрдЫ)ред рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдорд╛рдирдХ, рдЖрдорддреМрд░ рдкрд░ рдЗрддрдирд╛ рдердХрд╛рд╡рдЯ, рдХрд┐рд╕реА рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдЗрд╕ рд╢рдмреНрдж рдХрд╛ рдПрдХ рддреАрд╕рд░рд╛ рдЕрд░реНрде рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рдордп рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ: рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ - рдпрд╣ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рдФрд░ рд╕реА рдФрд░ рд╕реА ++ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрдиреБрдХреВрд▓рди рдкрд╕рдВрдж рд╣реИ; рд╡реЗ рдХреЛрдб рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рд╕рдВрднрд╡ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣ рд▓реЗрдЦ рдкрд╣рд▓реА рдмрд╛рд░ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рдерд╛ред рд▓реЗрдЦрдХ рдереЙрдорд╕ рдкреЛрд░реНрдирд┐рди рдХреА рдЕрдиреБрдорддрд┐ рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рд╣реИред

рдпрд╣рд╛рдБ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

void foo(double *src, int *dst) { int i; for (i = 0; i < 4; i ++) { dst[i] = (int)src[i]; } } 

рд╣рдо рдЗрд╕ рдЬреАрд╕реАрд╕реА рдХреЛрдб рдХреЛ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд 64-рдмрд┐рдЯ x86 рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВрдЧреЗ (рдореИрдВ рдЙрдмрдВрдЯреВ 18.04 рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЬреАрд╕реАрд╕реА рд╕рдВрд╕реНрдХрд░рдг 7.3.0 рд╣реИ)ред рд╣рдо рдкреВрд░реНрдг рдЕрдиреБрдХреВрд▓рди рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХреЛрдбрд╛рдВрддрд░рдХ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо "-Wall -O9 -S " рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рддрд░реНрдХ " -O9 " рдЬреАрд╕реАрд╕реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдЕрдзрд┐рдХрддрдо рд╕реНрддрд░ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ " -O3 " рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдХрд╛рдВрдЯреЗ рдореЗрдВ рд╣реИред рдЬреАрд╕реАрд╕реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рдЙрдЪреНрдЪ рд╕реНрддрд░)ред рд╣рдореЗрдВ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:

  .file "zap.c" .text .p2align 4,,15 .globl foo .type foo, @function foo: .LFB0: .cfi_startproc movupd (%rdi), %xmm0 movupd 16(%rdi), %xmm1 cvttpd2dq %xmm0, %xmm0 cvttpd2dq %xmm1, %xmm1 punpcklqdq %xmm1, %xmm0 movups %xmm0, (%rsi) ret .cfi_endproc .LFE0: .size foo, .-foo .ident "GCC: (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0" .section .note.GNU-stack,"",@progbits 

рдкрд╣рд▓реЗ рджреЛ рдореВрд╡рдореЗрдВрдЯ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рджреЛ рдбрдмрд▓ рдорд╛рдиреЛрдВ рдХреЛ 128-рдмрд┐рдЯ SSE2 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ ( рдбрдмрд▓ рдХрд╛ рдЖрдХрд╛рд░ 64 рдмрд┐рдЯреНрд╕ рд╣реИ, рдЗрд╕рд▓рд┐рдП SSE2 рд░рдЬрд┐рд╕реНрдЯрд░ рджреЛ рджреЛрд╣рд░реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЪрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЙрдиреНрд╣реЗрдВ рдЗрдВрдЯ ( cvttpd2dq рдСрдкрд░реЗрд╢рди) рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред Punpcklqdq рдСрдкрд░реЗрд╢рди рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреЛ рдПрдХ SSE2 рд░рдЬрд┐рд╕реНрдЯрд░ (% xmm0 ) рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рддрдм RAM ( movups ) рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЕрдм рдореБрдЦреНрдп рдмрд╛рдд: рд╣рдорд╛рд░реЗ рд╕реА-рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рддрдХ рдкрд╣реБрдВрдЪ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рд╣реЛ:

  • Src рд╕реЗ рдкрд╣рд▓рд╛ рджреЛрд╣рд░рд╛ рдореВрд▓реНрдп рдкрдврд╝реЗрдВ [0] ред
  • Dst [0] рдХреЗ рдкреНрд░рдХрд╛рд░ int рдХрд╛ рдкрд╣рд▓рд╛ рдореВрд▓реНрдп рд▓рд┐рдЦреЗрдВред
  • Src [1] рд╕реЗ рджреВрд╕рд░рд╛ рджреЛрд╣рд░рд╛ рдореВрд▓реНрдп рдкрдврд╝реЗрдВред
  • Dst [1] рдХреЗ рдкреНрд░рдХрд╛рд░ int рдХрд╛ рджреВрд╕рд░рд╛ рдореВрд▓реНрдп рд▓рд┐рдЦреЗрдВред
  • рддреАрд╕рд░рд╛ рджреЛрд╣рд░рд╛ рдореВрд▓реНрдп src [2] рд╕реЗ рдкрдврд╝реЗрдВред
  • Dst [2] рдХреЗ рдкреНрд░рдХрд╛рд░ int рдХрд╛ рддреАрд╕рд░рд╛ рдорд╛рди рд▓рд┐рдЦреЗрдВред
  • рдЪреМрдерд╛ рдбрдмрд▓ рдорд╛рди src [3] рд╕реЗ рдкрдврд╝реЗрдВред
  • Dst [3] рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪреМрдереЗ рдорд╛рди рдХреЛ рд▓рд┐рдЦреЗрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрди рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдЕрдореВрд░реНрдд рдорд╢реАрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕реА рдорд╛рдирдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ; рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╢реАрди рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рд╕рдВрдХрд▓рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рдмрд╢рд░реНрддреЗ рдХрд┐ рдЙрдирдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдореВрд░реНрдд рдорд╢реАрди (рддрдерд╛рдХрдерд┐рдд рд░реВрдк рдореЗрдВ-рдЕрдЧрд░ рдирд┐рдпрдо "рдЬреИрд╕рд╛ рд╣реИ") рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдХреНрд░рдо рдмрд╕ рдЕрд▓рдЧ рд╣реИ:

  • Src рд╕реЗ рдкрд╣рд▓рд╛ рджреЛрд╣рд░рд╛ рдореВрд▓реНрдп рдкрдврд╝реЗрдВ [0] ред
  • Src [1] рд╕реЗ рджреВрд╕рд░рд╛ рджреЛрд╣рд░рд╛ рдореВрд▓реНрдп рдкрдврд╝реЗрдВред
  • рддреАрд╕рд░рд╛ рджреЛрд╣рд░рд╛ рдореВрд▓реНрдп src [2] рд╕реЗ рдкрдврд╝реЗрдВред
  • рдЪреМрдерд╛ рдбрдмрд▓ рдорд╛рди src [3] рд╕реЗ рдкрдврд╝реЗрдВред
  • Dst [0] рдХреЗ рдкреНрд░рдХрд╛рд░ int рдХрд╛ рдкрд╣рд▓рд╛ рдореВрд▓реНрдп рд▓рд┐рдЦреЗрдВред
  • Dst [1] рдХреЗ рдкреНрд░рдХрд╛рд░ int рдХрд╛ рджреВрд╕рд░рд╛ рдореВрд▓реНрдп рд▓рд┐рдЦреЗрдВред
  • Dst [2] рдХреЗ рдкреНрд░рдХрд╛рд░ int рдХрд╛ рддреАрд╕рд░рд╛ рдорд╛рди рд▓рд┐рдЦреЗрдВред
  • Dst [3] рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪреМрдереЗ рдорд╛рди рдХреЛ рд▓рд┐рдЦреЗрдВред

рдпрд╣ рд╕реА рднрд╛рд╖рд╛ рд╣реИ: рд╕рднреА рдореЗрдореЛрд░реА рдХрдВрдЯреЗрдВрдЯ рдЕрдВрддрддрдГ рдмрд╛рдЗрдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ (рдпрд╛рдиреА, рдЯрд╛рдЗрдк рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрд▓реЙрдЯ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЖрда рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рдореВрд╣), рдФрд░ рдХрд┐рд╕реА рднреА рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕реВрдЪрдХ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, src рдФрд░ dst рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЗрдореЛрд░реА рдХреЗ рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рднрд╛рдЧреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рд╕реНрдерд┐рддрд┐ "рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ" рдХрд╣рд▓рд╛рддреА рд╣реИ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдмрд╛рдЗрдЯреНрд╕ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рджреЛрдмрд╛рд░рд╛ рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рд░реАрдб рдПрдВрдб рд░рд╛рдЗрдЯ рдСрд░реНрдбрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕реА рдорд╛рдирдХ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рд╛рд░ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП, рд╕рдВрдХрд▓рдХ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмреАрдЪ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЪрдХреНрд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛ рдФрд░ рдмрд╣реБрдд рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╕реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рджреБрдЦ рдХреА рдмрд╛рдд рд╣реЛрдЧреАред

рдпрд╣рд╛рдБ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЕрдирд┐рд╢реНрдЪрд┐рддрдХрд╛рд▓реАрди рд╡реНрдпрд╡рд╣рд╛рд░ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред рдорд╛рдирдХ C рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдорд╛рди рдЙрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рдкреНрд░рдХрд╛рд░ рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рдорд╛рди dst [0] рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ dst рдПрдХ int рд╕реВрдЪрдХ рд╣реИ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдмрд╛рдЗрдЯреНрд╕ рдХреЛ src [1] рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ src рдПрдХ рджреЛрд╣рд░рд╛ рд╕реВрдЪрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдореВрд▓реНрдп, рдЬреЛ рдЕрдм рдЕрд╕рдВрдЧрдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реВрдЪрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЯрд╛рдЗрдк рдЗрдВрдЯ рдХрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирдХ ISO 9899: 1999 ("C99") рдХреЗ рдЕрдиреБрднрд╛рдЧ 6.5 рдХреЗ рдкреИрд░рд╛ 7 рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ (рдирдП рд╕рдВрд╕реНрдХрд░рдг 9899: 2018, рдпрд╛ "C17" рдореЗрдВ, рд╢рдмреНрджрд╛рдВрдХрди рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ)ред рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдЦреНрдд рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдирд┐рдпрдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рд╕рдВрдЪрд╛рд▓рди рд╕рдЦреНрдд рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдирд┐рдпрдо рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдХреЗ рдХрд╛рд░рдг рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдореЗрдореЛрд░реА рдХреЗ рдЕрддрд┐рд╡реНрдпрд╛рдкреА рднрд╛рдЧреЛрдВ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреЛрдб рдЕрдиреБрдХреВрд▓рди рдХреНрдпрд╛ рд╣реИред

рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрд░реНрде, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рд╣реИ: рд╕рдВрдХрд▓рдХ рдорд╛рди рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рд╕рдЦреНрдд рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдирд┐рдпрдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ - рдмрд╢рд░реНрддреЗ рдХрд┐ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рд╣реЛрддреА рд╣реИ, рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЕрдиреНрдпрдерд╛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреЛрдб рдкреАрдврд╝реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдпреЛрдЬрдирд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ: рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЙрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рди рдкрд░ рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдЙрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдмрд╛рдж рдЬреЛ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ dst рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ [] рдФрд░ "рдмрд╛рдж рдореЗрдВ" src рд╕реЗ рд╕рдВрдЪрд╛рд▓рди рдкрдврд╝реЗрдВ [] : рдРрд╕реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗрд╡рд▓ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрдм рд╕реНрдореГрддрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣, рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕рдВрдХрд▓рдХ рдХреЛ рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬрд┐рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рд╕рдм, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХрднреА-рдХрднреА рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕рдШрд╛рддреА рд╡рд┐рд╢реНрд╡рд╛рд╕рдШрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЕрдХреНрд╕рд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ: "рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╣рд╛рдиреЗ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред" рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХреЛрдИ рдРрд╕рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреА рдЖрд╢рдВрдХрд╛ рд╣реИ - рдмрд┐рдЯрдХреЙрдЗрди рдХрд╛ рдорд╛рдорд▓рд╛ рдпрд╛рдж рд░рдЦреЗрдВ рд╡рд╣ рдЗрд╕ рддрд░рд╣ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реИ: рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЫреЛрдЯрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рдд 32 рдмрд┐рдЯ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рд╣рдорд╛рд░реЗ рд╕рд╢рд░реНрдд рдбреЗрд╡рд▓рдкрд░ рдЗрд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗ:

 #include <stdio.h> #include <stdlib.h> int add(int x, int y, int *z) { int r = x + y; if (x > 0 && y > 0 && r < x) { return 0; } if (x < 0 && y < 0 && r > x) { return 0; } *z = r; return 1; } int main(int argc, char *argv[]) { int x, y, z; if (argc != 3) { return EXIT_FAILURE; } x = atoi(argv[1]); y = atoi(argv[2]); if (add(x, y, &z)) { printf("%d\n", z); } else { printf("overflow!\n"); } return 0; } 

рдЕрдм GCC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:

 $ gcc -W -Wall -O9 testadd.c $ ./a.out 17 42 59 $ ./a.out 2000000000 1500000000 overflow! 

рдареАрдХ рд╣реИ, рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред рдЕрдм рдПрдХ рдЕрдиреНрдп рд╕рдВрдХрд▓рдХ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд▓реИрдВрдЧ (рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг 6.0.0 рд╣реИ):

 $ clang -W -Wall -O3 testadd.c $ ./a.out 17 42 59 $ ./a.out 2000000000 1500000000 -794967296 

Shta?

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЬрдм рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд▓рдХреНрд╖реНрдп рдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрдВрдкрд╛рдЗрд▓рд░ рдорд╛рди рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдПрдХреНрд╕> 0 && y> 0 && r <x , рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реБрдП, рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ x рдФрд░ y рдХреЗ рдорд╛рди рдХрдбрд╝рд╛рдИ рд╕реЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рддреАрд╕рд░рд╛ рдЪреЗрдХ рд╕рд╣реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ (рджреЛ рдорд╛рдиреЛрдВ рдХрд╛ рдпреЛрдЧ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ,) рдФрд░ рдЖрдк рдЗрд╕ рдкреВрд░реЗ рдСрдкрд░реЗрд╢рди рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЪреВрдВрдХрд┐ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдВрдХрд▓рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ "рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛", рдФрд░ рдЗрд╕ рд░рд╛рдЬреНрдп рдкрд░ рдирд┐рд░реНрднрд░ рд╕рднреА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рддрдВрддреНрд░ рдмрд╕ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдорд╛рдирдХ рдиреЗ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЛ рдХрднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ "рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╢рдмреНрджрд╛рд░реНрде" (рдЬреЛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрд╣ рдкрд░рдВрдкрд░рд╛ рдХреЗ рдмрдЬрд╛рдп рд╣реБрдЖ - рдЙрди рджрд┐рдиреЛрдВ рдореЗрдВ рднреА рдЬрдм рдХреЛрдб рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрдорд╛рд░реНрдЯ рдирд╣реАрдВ рдереЗ, рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕реАрдорд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реБрдПред рдЖрдк Clang рдФрд░ GCC рдХреЛ -fwrapv рдзреНрд╡рдЬ (Microsoft Visual C рдореЗрдВ, рдЖрдк рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ -d2UndefIntOverflow- рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реИрдкрд┐рдВрдЧ рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ, рдХреЛрдб рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдзреНрд╡рдЬ рдЧрд╛рдпрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЪрд░рд┐рддреНрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдУрд╡рд░рдлреНрд▓реЛ рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдорд╛рдирдХ C99 рдФрд░ C17 рдХреЗ рдЦрдВрдб 6.5 рдХреЗ рдкреИрд░рд╛ 5 рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ:

рдпрджрд┐ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реИрдз рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛ рдХреЗ рдмрд╛рд╣рд░ рд╣реИ), рддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред

рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЙрдбреНрдпреВрд▓рд░ рд╢рдмреНрджрд╛рд░реНрде рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рддреА рд╣реИред рдЦрдВрдб 6.2.5 рдХреЗ рдЕрдиреБрдЪреНрдЫреЗрдж 9 рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ:

рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдСрдкрд░реЗрдВрдб рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдореЗрдВ рдУрд╡рд░рдлреНрд▓реЛ рдХрднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдП рдЧрдП рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рд╕реЗ рдПрдХ рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИред

рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рднрд╛рдЬрди рдСрдкрд░реЗрд╢рди рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╢реВрдиреНрдп рд╕реЗ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдСрдкрд░реЗрд╢рди рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ x86 рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдЗрдбрд┐рд╡ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдбрд┐рд╡рд╛рдЗрдбрд░ рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реНрдпрд╡рдзрд╛рди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рддрд░рд╣, рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреВрдирд┐рдХреНрд╕ рдЬреИрд╕реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░, рдЬреИрд╕реЗ рдХрд┐ рд▓рд┐рдирдХреНрд╕, idiv рдСрдкрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдкрд╡рд╛рдж рдХреЛ рдПрдХ SIGFPE рд╕рд┐рдЧреНрдирд▓ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ (рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рди рд╣реЛрдВ рдХрд┐ "FPE" "рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдЕрдкрд╡рд╛рдж" рдЕрдкрд╡рд╛рдж рд╣реИ) рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдСрдкрд░реЗрд╢рдВрд╕), рдЬрдмрдХрд┐ рдЖрдЗрдбрд┐рд╡ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int x, y; if (argc != 3) { return EXIT_FAILURE; } x = atoi(argv[1]); y = atoi(argv[2]); printf("%d\n", x / y); return 0; }  : $ gcc -W -Wall -O testdiv.c $ ./a.out 42 17 2 $ ./a.out -2147483648 -1 zsh: floating point exception (core dumped) ./a.out -2147483648 -1 

рдФрд░ рд╕рдЪреНрдЪрд╛рдИ рдпрд╣ рд╣реИ: рдЗрд╕ рдорд╢реАрди (рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди x86) рдкрд░, рдЗрдВрдЯ рдкреНрд░рдХрд╛рд░ -2,147,483,648 рд╕реЗ +2,147,483,647 рддрдХ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк -2,147,483,648 рдХреЛ -1 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ +2,147,483,648 рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдЕрдВрддрд░ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдмрд░рди рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдФрд░ рдкреНрд░рдгрд╛рд▓реА рдкрд░, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдо рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ, рдбрд┐рд╡реАрдЬрди рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдорддреМрд░ рдкрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдФрд░ рдЕрдм рдпрд╣ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣реА рд╡рд╣ рд╣реИред

рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ SIGFPE рдХреЛ рдЙрдиреНрд╣реАрдВ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдФрд░ modulo рдСрдкрд░реЗрдЯрд░ ( % ) рдХреА рдорджрдж рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ: рдЗрд╕рдХреЗ рддрд╣рдд рдПрдХ рд╣реА рдЖрдЗрдбрд┐рдПрд╡ рдСрдкрд░реЗрд╢рди рдирд┐рд╣рд┐рдд рд╣реИ, рдЬреЛ рднрд╛рдЧрдлрд▓ рдФрд░ рд╢реЗрд╖ рджреЛрдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╣реА рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдкрд╡рд╛рдж рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, C99 рдорд╛рдирдХ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ INT_MIN% -1 рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдо рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд (рд╢реВрдиреНрдп) рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рдХреНрд╖реНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг C17 рдореЗрдВ, рдЦрдВрдб 6.5.5 рдХреЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл 6 рдХреЗ рдкрд╛рда рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдм рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдорд╛рдирдХ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд░реАрдм рд▓рд╛рддрд╛ рд╣реИред

рдХрдИ рд╕реНрдкрд╖реНрдЯ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИрдВред рдЗрд╕ рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

 #include <stdio.h> #include <stdlib.h> unsigned short mul(unsigned short x, unsigned short y) { return x * y; } int main(int argc, char *argv[]) { int x, y; if (argc != 3) { return EXIT_FAILURE; } x = atoi(argv[1]); y = atoi(argv[2]); printf("%d\n", mul(x, y)); return 0; } 

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ C рдорд╛рдирдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ 45,000 рдФрд░ 50,000 рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ?

  • 18,048
  • 2250000000
  • рднрдЧрд╡рд╛рди рдмрдЪрд╛рдУ рд░рд╛рдиреА!

рд╕рд╣реА рдЙрддреНрддрд░ ... рд╣рд╛рдБ, рдЙрдкрд░реЛрдХреНрдд рд╕рднреА! рдЖрдк рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣ рд╕реЗ рддрд░реНрдХ рджреЗрддреЗ рд╣реИрдВ: рдЪреВрдВрдХрд┐ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╢реЙрд░реНрдЯ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд░реИрдкрд┐рдВрдЧ рдореЛрдбреБрд▓реЛ 65 536 рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ x86 рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдмрд┐рд▓реНрдХреБрд▓ 16 рдмрд┐рдЯреНрд╕ рд╣реИ (рдорд╛рдирдХ рднреА рдмрдбрд╝реЗ рдЖрдХрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдЕрднреА рднреА рдПрдХ 16-рдмрд┐рдЯ рдкреНрд░рдХрд╛рд░ рд╣реИ)ред рдЪреВрдВрдХрд┐ рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рдЙрддреНрдкрд╛рдж 2,250,000,000 рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ 65,536 рдореЛрдбреНрдпреВрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ 18,048 рдХрд╛ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрддреЗ рд╣реБрдП, рд╣рдо рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рд╕реА рдорд╛рдирдХ (рдзрд╛рд░рд╛ 6.3.1.1, рдкреИрд░рд╛рдЧреНрд░рд╛рдл 2) рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрджрд┐ рдСрдкрд░реЗрдВрдб рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рдЖрдХрд╛рд░ рдЗрдВрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдбрд╝рд╛рдИ рд╕реЗ рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрд┐рдЯреНрд╕ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд┐рдирд╛ рдЗрдВрдЯ рдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИ: рдореЗрд░реЗ x86 рдХреЗ рддрд╣рдд рд▓рд┐рдирдХреНрд╕ рдореЗрдВ 32 рдмрд┐рдЯреНрд╕ рдХрд╛ рдПрдХ рдЕрдВрддрд░ рдЖрдХрд╛рд░ рд╣реИ, рдФрд░ рдпрд╣ 0 рд╕реЗ 65,535 рддрдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ), рдлрд┐рд░ рджреЛрдиреЛрдВ рдСрдкрд░реЗрдВрдб рдХреЛ рдЗрдВрдЯ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдореВрд▓реНрдпреЛрдВ рдкрд░ рдСрдкрд░реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН: рдЙрддреНрдкрд╛рдж рдХреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдФрд░ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд▓реМрдЯрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдмрд┐рдирд╛ рдЫреЛрдбрд╝реЗ рд╢реЙрд░реНрдЯ рдореЗрдВ рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдпрд╣ рдЗрд╕ рд╕рдордп рд╣реИ рдХрд┐ рдЯреНрд░рдВрдХреЗрд╢рди рдореЛрдбреБрд▓реЛ 65 536 рд╣реЛрддрд╛ рд╣реИ)ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рдЙрд▓рдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдкрд╣рд▓реЗ рдкрд░рд┐рдгрд╛рдо 2.250 рдорд┐рд▓рд┐рдпрди рд╣реИ, рдФрд░ рдпрд╣ рдорд╛рди рдЗрдВрдЯ рдХреА рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдЬреЛ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЕрдВрдЧреНрд░реЗрдЬреА рджреЗрд╢рднрдХреНрддрд┐ рдХреЗ рдЕрдЪрд╛рдирдХ рдореБрдХрд╛рдмрд▓реЛрдВ рд╕рд╣рд┐рдд рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдХрд▓рдХ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо 18,048 рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрднреА рднреА рдХреЛрдИ рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИ (рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдХреГрддреНрд░рд┐рдо рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рдкреИрджрд╛ рдХрд░реЗрдЧрд╛)ред

рдЕрдВрдд рдореЗрдВ, C ++ рдореЗрдВ рдЕрдм рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:

 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <array> int main(int argc, char *argv[]) { std::array<char, 16> tmp; int i; if (argc < 2) { return EXIT_FAILURE; } memset(tmp.data(), 0, 16); if (strlen(argv[1]) < 16) { strcpy(tmp.data(), argv[1]); } for (i = 0; i < 17; i ++) { printf(" %02x", tmp[i]); } printf("\n"); } 

рдпрд╣ рдЖрдк рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ "рдмреБрд░рд╛ рднрдпрд╛рдирдХ strcpy () рдирд╣реАрдВ рд╣реИ !" рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣рд╛рдБ strcpy () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдЯрд░реНрдорд┐рдирд▓ рд╢реВрдиреНрдп рд╕рд╣рд┐рдд рд╕реНрд░реЛрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЖрдХрд╛рд░ рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реЛред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╢реВрдиреНрдп рдкрд░ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд░рдгреА рдореЗрдВ рд╕рднреА рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдПрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд╣реИ, рднрд▓реЗ рд╣реА рдПрдХ рдмрдбрд╝реЗ рдпрд╛ рдЫреЛрдЯреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдЗрд╕реА рд╕рдордп, рдЕрдВрдд рдореЗрдВ рд▓реВрдк рдЧрд▓рдд рд╣реИ: рдпрд╣ рдПрдХ рдмрд╛рдЗрдЯ рдХреЛ рдЬрд┐рддрдирд╛ рдЪрд╛рд╣рд┐рдП рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдкрдврд╝рддрд╛ рд╣реИред

рдХреЛрдб рдЪрд▓рд╛рдПрдБ:

 $ g++ -W -Wall -O9 testvec.c $ ./a.out foo 66 6f 6f 00 00 00 00 00 00 00 00 00 00 00 00 00 10 58 ffffffca ff ffffac ffffffc0 55 00 00 00 ffffff80 71 34 ffffff99 07 ffffffba ff ffffea ffffffd0 ffffffe5 44 ffffff83 fffffffd 7f 00 00 00 00 00 00 00 00 00 00 10 58 ffffffca ffffffac ffffffc0 55 00 00 ffffff97 7b 12 1b ffffffa1 7f 00 00 02 00 00 00 00 00 00 00 ffffffd8 ffffffe5 44 ffffff83 fffffffd 7f 00 00 00 ffffff80 00 00 02 00 00 00 60 56 (...) 62 64 3d 30 30 zsh: segmentation fault (core dumped) ./a.out foo ++? 

рдЖрдк рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╣ рд╕рд░рдгреА рдХреА рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд╛рдЗрдЯ рдкрдврд╝рддрд╛ рд╣реИ; рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреИрдХ рдкрд░ рдпрд╣ рдмрд╛рдЗрдЯ рдЕрднреА рднреА рд╣реИ, рдпрд╣ рд╕реНрдореГрддрд┐ рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдПрдХ рдЕрдЬреНрдЮрд╛рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рддреНрд░рд╣рд╡реЗрдВ рддрддреНрд╡ рд╣реИред рдЪрдХреНрд░ рдЕрднреА рднреА 17 рдкреВрд░реНрдгрд╛рдВрдХ (рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ) рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╢рд┐рдХрд╛рдпрдд рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдЧрд╛ред

рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЕрдкрдиреА рд░рд╛рдп рд╣реИред рд╡рд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рддреНрд░рд╣рд╡рд╛рдБ рдкрдврд╝рдирд╛ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рднрдбрд╝рдХрд╛рддрд╛ рд╣реИред рдЙрдирдХреЗ рддрд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреЛрдИ рднреА рдмрд╛рдж рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рдЕрдзрд░ рдореЗрдВ рд╣реИ: рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рдж рдХреБрдЫ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдкрд┐рдЫрд▓реЗ рдирд┐рд░реНрджреЗрд╢ рднреА рд╣рдорд▓реЗ рдХреЗ рдЕрдзреАрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рднреА рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрдХрд▓рдХ рдХреЗрд╡рд▓ рд▓реВрдк рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛, рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд┐рди рдХрд░реЗрдЧрд╛, рдпрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЗ рдмрд╛рд╣рд░ рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж SIGSEGV рд╕рд┐рдЧреНрдирд▓ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдпрд╣ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЬреАрд╕реАрд╕реА рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХрдо рдЖрдХреНрд░рд╛рдордХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЧрд╛:

 $ g++ -W -Wall -O1 testvec.c testvec.c: In function 'int main(int, char**)': testvec.c:20:15: warning: iteration 16 invokes undefined behavior [-Waggressive-loop-optimizations] printf(" %02x", tmp[i]); ~~~~~~^~~~~~~~~~~~~~~~~ testvec.c:19:19: note: within this loop for (i = 0; i < 17; i ++) { ~~^~~~ 

-рдУ 9 рдкрд░, рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдХрд┐рд╕реА рддрд░рд╣ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╢рд╛рдпрдж рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░, рд╕рдВрдХрд▓рдХ рдЕрдзрд┐рдХ рдЖрдХреНрд░рд╛рдордХ рд░реВрдк рд╕реЗ рд▓реВрдк рдХреА рддреИрдирд╛рддреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ (рд▓реЗрдХрд┐рди рдЧрд▓рдд рд╣реИ) рдпрд╣ рдПрдХ рдЬреАрд╕реАрд╕реА рдмрдЧ рд╣реИ (рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдЕрд░реНрде рдореЗрдВ; рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЬреАрд╕реАрд╕реА рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдорд╛рдирдХ рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕реЗ "рдирд┐рджрд╛рди" рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред

рдирд┐рд╖реНрдХрд░реНрд╖: рдпрджрд┐ рдЖрдк C рдпрд╛ C ++ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЕрддреНрдпрдзрд┐рдХ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ рдФрд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪреЗрдВ рдЬреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИрдВ, рднрд▓реЗ рд╣реА рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "рдареАрдХ рд╣реИ"ред

рдЕрдВрдХрдЧрдгрд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдЧрдгрдирд╛ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреЗ рд╕рд╣рд╛рдпрдХ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдореЙрдбреНрдпреВрд▓рд░ рд╢рдмреНрджрд╛рд░реНрде рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ (рд▓реЗрдХрд┐рди рдЖрдк рдЕрднреА рднреА рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк - рдХрд┐рд╕реА рдХрд╛рд░рдг рдЕрд▓реЛрдХрдкреНрд░рд┐рдп рдХреЗ рд▓рд┐рдП - рд╕реА рдФрд░ рд╕реА ++ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИред рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╣рдореЗрд╢рд╛ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рднрд╛рд╖рд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЬрдм рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЧреЛ, рд░рд╕реНрдЯ, рдЬрд╛рд╡рд╛ рдпрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реА рдХреЛ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд▓рд╛рднрджрд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╕рд╣рд┐рдд рдЯреВрд▓ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рдордЭреМрддрд╛ рд╣реИред рд╕реА рдХреЗ рдиреБрдХрд╕рд╛рди, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░, рдХреЛрдб рдХреЗ рдЖрдЧреЗ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрдд рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдХреНрд╕рд░ рдХрдо рдХрд░рдХреЗ рдЖрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi439502/


All Articles