}
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π° + b ΠΎΡ int ΠΊ byte Π²ΠΎΠ·Π±ΡΠΆΠ΄Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅, Π³Π΄Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Convert.ToByte, ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ Π±Ρ ΠΈ Π±Π΅Π· ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° checked, Π½ΠΎ Π΅Π³ΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π²ΠΎΠ·Π±ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΅ΡΠ΅ ΠΈ ΠΏΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° Console.Write(). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΠ³ΠΎ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ, ΡΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ unchecked, ΠΎΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
Π‘Π»ΠΎΠ²Π° checked ΠΈ unchecked ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ:
...checked (Ρ = (byte) (Π¬ + Π°));
Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π°Π³Π° /checked ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. ΠΡΠ»ΠΈ ΡΡΠΎΡ ΡΠ»Π°Π³ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠ»ΠΎΠ²ΠΎΠΌ unchecked ΡΡΠ°ΡΡΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ.
ΠΡΠ΅Ρ ΠΎΠ²Π½ΠΎΡΡΡ Visual Basic ΠΈ Visual Basic .NET
Visual Basic ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΏΡΠ΅ΡΠ΅ΡΠΏΠ΅Π²Π°Π΅Ρ ΠΊΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΎΡ Visual Basic 6.0 ΠΊ Visual Basic .NET ΡΡΠ°Π» ΡΠ°ΠΌΡΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ°Π³ΠΎΠΌ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ Π² Visual Basic 3.0. ΠΠ΄Π½ΠΎ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ (ΡΠΌ. ΡΠ°Π±Π». 3.1).
ΠΠΎΠΎΠ±ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΈ Visual Basic 6.0, ΠΈ Visual Basic .NET Π½Π΅ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ ΡΠ³ΡΠΎΠ·Π΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ·βΠ·Π° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π». Π Visual Basic 6.0 Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°, Π΅ΡΠ»ΠΈ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎβΠ»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ CInt(), Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π Visual Basic .NET Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π±ΡΠΆΠ΄Π°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° System.OverflowException. ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π±Π». 3.1, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° Visual Basic .NET ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π² ΠΊΠ°ΡΠΊΠ°ΡΠ΅ .NET Framework.
Π’Π°Π±Π»ΠΈΡΠ° 3.1. Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Visual Basic 6.0 ΠΈ Visual Basic .NET
Π₯ΠΎΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΡΠ°ΠΌΠΎΠΌ ΡΠ·ΡΠΊΠ΅ Visual Basic, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΠΈ Π½Π΅ΡΡΠ·Π²ΠΈΠΌΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΠ³ΠΎ, Π½ΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Ρ Win32 API ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² 32βΡΠ°Π·ΡΡΠ΄Π½ΡΠ΅ ΡΠ΅Π»ΡΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° (DWORD). ΠΡΠ»ΠΈ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌΡ Π²ΡΠ·ΠΎΠ²Ρ 32βΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ, ΡΠΎ Π² ΠΎΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ°ΠΊΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠ°ΠΊ 2 β 8046, Π½Π°Π΄ ΡΠΈΡΠ»Π°ΠΌΠΈ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ, Π½ΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΡΠ°ΠΊΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, ΡΡΠΎΠ±Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅? ΠΡΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° ΠΏΠΎΡΠΎΠΌ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Π½Π°Π΄ ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π²Π΅Π»ΠΈΡΠΈΠ½ΠΎΠΉ, ΠΏΡΡΠΌΠΎ ΠΈΠ»ΠΈ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎ (ΠΏΠΎΡΠ»Π΅ ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ) ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΈ Π½Π°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΠ΅ΡΡ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π²ΡΠ·ΠΎΠ²Π°ΠΌ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π² ΡΠ³ΡΠΎΠΆΠ°Π΅ΠΌΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ. ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΎΡ Π·Π½Π°ΠΊΠΎΠ²ΡΡ ΡΠΈΡΠ΅Π» ΠΊ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΌ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΡΠ΅Π²Π°ΡΡ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΠΈ Π½Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½ΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΎΡΠΊΠ°Π·Π° ΠΎΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ. ΠΠ΅ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ Π΄ΠΎΡ ΠΎΠ΄ΠΎΠ² Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΡ.
ΠΡΠ΅Ρ ΠΎΠ²Π½ΠΎΡΡΡ Java
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Visual Basic ΠΈ Π‘#, Π² ΡΠ·ΡΠΊ Java Π½Π΅ Π²ΡΡΡΠΎΠ΅Π½Π° Π·Π°ΡΠΈΡΠ° ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ. ΠΠΎΡ ΡΠΈΡΠ°ΡΠ° ΠΈΠ· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ·ΡΠΊΠ° Β«Java Language Specification*, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://java.sun.com/docs/books/jls/second_edition/html/typeValues.doc.html#9151:ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅ΡΡ Π·Π½Π°ΡΠΈΠΌΠΎΡΡΠΈ Π½Π΅ ΠΈΠ½Π΄ΠΈΡΠΈΡΡΡΡΡΡ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π±ΡΠ΄ΠΈΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ (Β§11), β ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΡ / (Β§15.17.2) ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΡΡΠ°ΡΠΊΠ° % (Β§15.17.3). ΠΠ½ΠΈ Π²ΠΎΠ·Π±ΡΠΆΠ΄Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ArithmeticException, Π΅ΡΠ»ΠΈ ΠΏΡΠ°Π²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Visual Basic, Java ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΠΈΡΡ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅Π³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ². Π₯ΠΎΡΡ 64βΡΠ°Π·ΡΡΠ΄Π½ΡΠ΅ ΡΠ΅Π»ΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ, Π½ΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΌ ΡΠΈΠΏΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ char, ΠΈ ΠΎΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ 16βΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±Π΅Π· Π·Π½Π°ΠΊΠ°.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Java Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΠΏΡΠΎΡΡΡΠΌ Π΄Π΅Π»ΠΎΠΌ, ΠΈ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ C/C++ ΡΠ΄Π°Π΅ΡΡΡ Π»ΠΈΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΡΠΎ ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ Π½Π°Π΄ Π·Π½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΌΠΈ Π²Π΅Π»ΠΈΡΠΈΠ½Π°ΠΌΠΈ.
ΠΡΠ΅Ρ ΠΎΠ²Π½ΠΎΡΡΡ Perl
ΠΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π΄Π²Π° Π°Π²ΡΠΎΡΠ° ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΡΠ²Π»ΡΡΡΡΡ Π³ΠΎΡΡΡΠΈΠΌΠΈ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΊΠ°ΠΌΠΈ Perl. ΠΠΎ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ·Π½Π°ΡΡ, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Perl ΡΡΡΠ°Π½Π½ΠΎ. ΠΠ½ΡΡΡΠΈ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ²ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΡΠ±ΠΎΠΏΡΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:...$h = 4294967295;
$i = 0xffffffff;
$k = 0x80000000;
print "$h = 4294967295 β $h + 1 = ".($h + 1)."\n";
print "$i = 0xffffffff β $i + 1 = ".($i + 1)."\n";
printf("\nΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ printf ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ %%d\n");
printf("\\$i = %d, \$i + 1 = %d\n\n", $i, $i + 1);
printf("\nΠ’Π΅ΡΡΠΈΡΡΠ΅ΡΡΡ Π³ΡΠ°Π½ΠΈΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ Π΄Π΅Π»Π΅Π½ΠΈΡ\n");
printf("0x80000000/-1 = %d\n", $k/-1);
print "0x80000000/-1 = ".($k/-1)."\n";
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
...[e:\projects\19_sins\perl foo.pl
4294967295 = 4294967295 β 4294967295 + 1 = 4294967296
4294967295 = 0xffffffff β 4294967295 + 1 = 4294967296
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ printf ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ %d
$i = -1, $i + 1 = -1
Π’Π΅ΡΡΠΈΡΡΠ΅ΡΡΡ Π³ΡΠ°Π½ΠΈΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ Π΄Π΅Π»Π΅Π½ΠΈΡ
0x80000000/-1 = -2147483648
0x80000000/-1 = -2147483648
ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΡΠ°Π½Π½ΠΎ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ printf Ρ ΡΠΎΡΠΌΠ°ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ print). ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ Π² Π³Π»Π°Π·Π° Π±ΡΠΎΡΠ°Π΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΊ Π½Π΅ΠΌΡ 1 ΠΎΠ½Π° Π»ΠΈΠ±ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ, Π»ΠΈΠ±ΠΎ β Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ %d β Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. ΠΠ°Π³Π²ΠΎΠ·Π΄ΠΊΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²Ρ ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅ΡΠ΅ ΡΠΈΡΠ»Π°ΠΌΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ %d Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Perl ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ double Π² int. Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅Ρ, Π½ΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ°ΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅, Π±ΡΠ΄ΡΠΎ ΠΎΠ½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ.
Π ΡΠΈΠ»Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ Π² Perl ΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΡΠΌΠΈ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π½Π° ΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ Π΄ΠΎΡΠΊΠΎΠ½Π°Π»ΡΠ½ΠΎ Π² Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ΅ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΡΠΏΡΠΈΠ·Π°ΠΌΠΈ. ΠΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Visual Basic, ΡΠΎΠΆΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ:
...print (5/4)."\n";
1.25
ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΎΠ±ΡΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Perl Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎ. ΠΠΎ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π΄Π΅Π»ΠΎ Π½Π΅ Ρ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, Π° Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, β Π° ΡΡΠΎ Β«Π΄Π²Π΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ°Π·Π½ΠΈΡΡΒ».
ΠΠ΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ
ΠΡΠ±ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½ΠΎ ΡΡΠΎΠΌΡ Π³ΡΠ΅Ρ Ρ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ. ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ Π½Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΡΡ Π±ΡΡΠ΅ΡΠΎΠ² Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π° C/C++.
ΠΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°
ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ°Ρ C/C++ Π½Π°Π΄ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΈΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΎΡΠΎΠ·Π½Π°Π»ΠΈ Π²Π°ΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΏΡΠΈ ΠΏΡΡΠΌΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ, Π°ΡΠ°ΠΊΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Ρ Π½Π°ΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌΠΈ Π½Π° ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΡΠΎΡΡ Π‘# ΠΈ Java. ΠΡΡΠΌΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ ΠΏΠ°ΠΌΡΡΡΡ Π² ΡΡΠΈΡ ΡΠ·ΡΠΊΠ°Ρ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ, Π½ΠΎ ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΡΡ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½Ρ Π΄Π»Ρ Π‘ ΠΈ Π‘++.
ΠΠΎ Π²ΡΠ΅ΠΌ ΡΠ·ΡΠΊΠ°ΠΌ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ ΠΊΠ°ΠΊΠΈΠΌβΠ»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ! Π WebβΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Microsoft IIS 4.0 ΠΈ 5.0 ΠΎΡΠ΅Π½Ρ ΡΠ΅ΡΡΠ΅Π·Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΠΌΠ΅Π»Π° ΠΌΠ΅ΡΡΠΎ ΠΈΠ·βΠ·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΈΠ±Π°Π²ΠΈΠ» ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ 1, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ», Π½Π΅ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ. ΠΡΠΈ ΡΠ΅Ρ ΡΠΈΠΏΠ°Ρ , ΡΡΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π», 64Πβ1 + 1 ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ! ΠΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΈΠ·Π²Π΅ΡΠ΅Π½ΠΈΠ΅ Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΡΡΠ³ΠΈΠ΅ ΡΠ΅ΡΡΡΡΡΒ».
C/C++
ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ Π²ΡΠ΅ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ. Π‘Π°ΠΌΠΎΠ΅ ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ β ΡΡΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ°, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΠ³ΠΎ. ΠΠ°Π»Π΅Π΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ²ΡΠΎΡ ΠΊΠ°ΠΊβΡΠΎ Π²ΡΡΡΠ΅ΡΠΈΠ» ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
...THING* AllocThings(int a, int b, int c, int d)
{
int bufsize;
THING* ptr;
bufsize = IntegerOverflowsRUs(a, b, c, d);
ptr = (THING*)malloc(bufsize);
return ptr;
}
ΠΡΠΈΠ±ΠΊΠ° ΡΠΊΡΡΠ²Π°Π»Π°ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΡΠΈΡΠ»ΡΡΡΠ΅ΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠ°, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ Π½Π°ΠΉΡΠΈ Π΅Π΅ ΠΌΠ΅ΡΠ°Π»ΠΈ Π·Π°Π³Π°Π΄ΠΎΡΠ½ΡΠ΅, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡΡΡΠΈΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΠΈ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠΈΠΏΠΎΠΌ signed int). ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° Π΄ΠΎΡΠΊΠΎΠ½Π°Π»ΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ·, ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠ·ΠΎΠ²Π° Π²ΡΠ΅Ρ Π²Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π²ΡΠ·ΠΎΠ²Π°ΠΌ. Π Π½Π°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ Π²ΡΡΡΠ½ΠΈΡΠ΅, ΠΎΡΠΊΡΠ΄Π° ΠΏΠΎΡΡΡΠΏΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π΅ ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°Π»ΠΈΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡΠΌ? ΠΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ: Π²Ρ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊ?
ΠΠΎ ΠΌΠ½Π΅Π½ΠΈΡ Π°Π²ΡΠΎΡΠ° ΡΠ·ΡΠΊΠ° Perl, Π²Π΅Π»ΠΈΡΠ°ΠΉΡΠΈΠΌ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π»Π΅Π½Ρ! Π’Π°ΠΊ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΉΠ΄Π΅ΠΌ ΠΏΡΠΎΡΡΡΠΌ ΠΏΡΡΠ΅ΠΌ β Π·Π°ΡΡΠ°Π²ΠΈΠΌ ΠΏΠΎΡΡΡΠ΄ΠΈΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ. ΠΠΊΠ»ΡΡΠΈΡΠ΅ ΡΡΠΎΠ²Π΅Π½Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ /W4 (Π΄Π»Ρ Visual Π‘++) ΠΈΠ»ΠΈβWall Π»ΠΈΠ±ΠΎβWsignβcompare (Π΄Π»Ρ gcc) β ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π² Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΠ΅ΡΡ, Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ. ΠΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΊΠ°ΡΠ°ΡΡΠΈΠ΅ΡΡ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π° ΡΠ΅, Π² ΠΊΠΎΡΠΎΡΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Π·Π½Π°ΠΊΠΎΠ²ΡΡ ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ± ΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ.