4-3-3.checked

º¯¼ö´Â ŸÀÔ¿¡ µû¶ó ±â¾ï °¡´ÉÇÑ ¹üÀ§°¡ Á¤ÇØÁ® ÀÖ´Ù. ¹üÀ§ ¹Ù±ùÀÇ °ªÀ» ´ëÀÔÇÒ ¼ö´Â ¾øÁö¸¸ ¿¬»êÁß¿¡ ¹üÀ§¸¦ ¹þ¾î³ª ¾û¶×ÇÑ °ªÀÌ µÇ´Â °æ¿ì´Â Á¾Á¾ ÀÖ´Ù. ÀÌ·± Çö»óÀ» ¿À¹öÇ÷οì(Overflow)¶ó°í Çϴµ¥ ´ÙÀ½ ¿¹Á¦¸¦ ½ÇÇàÇØ º¸ÀÚ.

 

Overflow

½ÇÇà°á°ú

using System;

 

class CSTest {

     static void Main() {

          byte b;

          b = 255;

          b++;

          Console.WriteLine(b);

     }

}

0

 

byte ŸÀÔÀº ÃÖ´ë 255±îÁöÀÇ °ªÀ» ±â¾ïÇϴµ¥ 255¿¡¼­ 1Áõ°¡Çϸé 256ÀÌ µÇ´Â °ÍÀÌ ¾Æ´Ï¶ó 0ÀÌ µÇ¾î ¹ö¸°´Ù. byte´Â 256À» Ç¥ÇöÇÒ ¼ö ¾ø¾î 255 ´ÙÀ½ÀÇ ¼ö°¡ 0ÀÌ´Ù. ¹Ý´ë·Î b°¡ 0ÀÏ ¶§ b--´Â -1ÀÌ ¾Æ´Ñ 255°¡ µÇ´Âµ¥ À̰͵µ ¿À¹öÇ÷οìÀÌ´Ù.

byteº¸´Ù ´õ Å« ŸÀÔÀÎ int³ª longµµ ¼öÇп¡¼­Ã³·³ ¹«ÇÑÇÑ °ªÀ» ±â¾ïÇÒ ¼ö´Â ¾ø¾î ¿À¹öÇ÷οì´Â ¿©ÀüÈ÷ Á¸ÀçÇÑ´Ù. ½Ç¼öÇüÀº Ç¥ÇöÇÒ ¼ö ¾øÀ»¸¸Å­ Å« °ªÀ̳ª ÀÛÀº °ªÀÌ µÉ ¶§ ¿À¹öÇ÷οì, ¾ð´õÇ÷ο찡 ¹ß»ýÇÑ´Ù. ±â¾ï ¹üÀ§ÀÇ Á¦ÇÑÀ¸·Î ÀÎÇØ ¹ß»ýÇÏ´Â ÀÚ¿¬½º·¯¿î Çö»óÀÌ¸ç °³¹ßÀÚ´Â ÀÌ·± Çö»óÀ» ±³¹¦ÇÏ°Ô ÀÌ¿ëÇØ ¸Ô±âµµ ÇÑ´Ù.

ÇÏÁö¸¸ ¶æÇÏÁö ¾Ê°Ô ¹ß»ýÇÏ´Â ¿À¹öÇ÷οì´Â Å« ¹®Á¦°¡ µÉ ¼öµµ ÀÖ´Ù. ±×·¡¼­ C#Àº ¿À¹öÇ÷ο찡 ¹ß»ýÇÒ ¶§ À̸¦ °³¹ßÀÚ¿¡°Ô ¾Ë·Á ÁÖ´Â ÀåÄ¡°¡ ¸¶·ÃµÇ¾î ÀÖ´Ù. ÇÁ·ÎÁ§Æ® ¼Ó¼º/ºôµå/°í±Þ ´ëÈ­»óÀÚÀÇ ¿É¼ÇÀ» ¼±ÅÃÇÏ¸é ¸ðµç ¿¬»ê¹®¿¡ ´ëÇØ ¿À¹öÇ÷ο츦 Á¡°ËÇÑ´Ù.

ÀÌ ¿É¼ÇÀ» ÄÒä ¿¹Á¦¸¦ ½ÇÇàÇϸé OverflowException ¿¹¿Ü°¡ ¹ß»ýÇÑ´Ù. °³¹ßÀÚ´Â ÀÌ ¿¹¿Ü¸¦ ÅëÇØ ÀÌ»ó ¹ß»ý »ç½ÇÀ» ¾Ë ¼ö ÀÖÀ¸¸ç ¿¹¿Ü ó¸® ±¸¹®À» ÅëÇØ ¿À¹öÇÃ·Î¿ì ¹ß»ý½Ã¿¡ ÀûÀýÇÑ Ã³¸®¸¦ ÇÒ ¼ö ÀÖ´Ù. ¸ðµç ¿¬»ê¹®¿¡ ´ëÇØ ¿À¹öÇ÷ο츦 ÀÏÀÏÀÌ Ã¼Å©Çϸé ÇÁ·Î±×·¥Àº Ä¿Áö°í ¼Óµµ´Â ´À·ÁÁø´Ù.

ÇÁ·ÎÁ§Æ® ¼³Á¤°ú´Â º°°³·Î °³º° ¿¬»ê¹®¿¡ ´ëÇØ ¿À¹öÇ÷οì üũ ¿©ºÎ¸¦ ÁöÁ¤Çϰųª ÇØÁ¦ÇÒ ¼ö ÀÖ´Ù. checked { b++; } À̶ó°í ¾²¸é ÇÁ·ÎÁ§Æ®ÀÇ ¼³Á¤ ¿©ºÎ¿¡ »ó°ü¾øÀÌ { } ºí·Ï ¾ÈÀÇ ¿¬»ê¹®¿¡ ´ëÇØ ¿À¹öÇ÷οì/¾ð´õÇ÷ο츦 üũÇÑ´Ù. ¹Ý¸é unchecked { b++; } À̶ó°í ¾²¸é üũ¸¦ »ý·«ÇÑ´Ù. ¾Õ ¿¹Á¦ÀÇ Äڵ忡 unchecked¸¦ Àû¿ëÇØ º¸ÀÚ.

 

int i = 123456;

short s;

unchecked { s = (short)i; }

 

shortÀÇ ¹üÀ§¸¦ ³Ñ´Â °ªÀ» ´ëÀÔÇÏ¿© ¿À¹öÇÃ·Î¿ì ¿¹¿Ü°¡ ¹ß»ýÇÑ´Ù. ÀÌ Äڵ尡 ÀǵµµÈ °ÍÀ̶ó¸é, Áï °ªÀÌ Á¶±Ý Àß·Áµµ »ó°ü¾ø´Ù¸é ¿À¹öÇ÷οì üũ¸¦ ±ÝÁö½ÃÄÑ¾ß Çϸç ÀÌ·² ¶§ ij½ºÆ® ¿¬»ê¹®À» unchecked·Î °¨½Ñ´Ù.