¢Ê 4ÀÏ: ¼ö½Ä - Á¢¹ÌÁõ°¡


¢¹ A7. ¼ö½Ä (Expression)
  ¿¬»êÀÚÀÇ ¿ì¼±¼øÀ§ (precedence) ´Â ¾ÕÀ¸·Î ¿¬»êÀÚ¸¦ ¿­°ÅÇÏ´Â ¼ø¼­¿Í µ¿ÀÏÇÕ´Ï´Ù. (¿¬»ê¼øÀ§°¡ ³ôÀº °ÍºÎÅÍ ¼³¸íÇÕ´Ï´Ù) µû¶ó¼­ + ¿¬»êÀÚ (A7.7) ¿¡¼­ ÇÇ¿¬»êÀÚ·Î ¾ð±ÞµÇ´Â ¼ö½ÄµéÀº A7.1 - A7.6 »çÀÌ¿¡¼­ Á¤ÀÇµÈ ¼ö½ÄµéÀÔ´Ï´Ù. °°Àº Àý¿¡¼­ ¼Ò°³ÇÏ´Â ¿¬»êÀÚµéÀº µ¿ÀÏÇÑ ¿¬»ê¼øÀ§¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ¿¬»êÀÚÀÇ °áÇÕ¼ø¼­ (associativity) ´Â °¢ ¿¬»êÀÚ¸¦ ¼³¸íÇϸ鼭 ÇÔ²² Àû¾î µÎ¾ú½À´Ï´Ù. A13 Àý¿¡ ³ª¿À´Â ¹®¹ý¿¡´Â ¿ì¼±¼øÀ§¿Í °áÇÕ¼ø¼­¸¦ ÇÔ²² Ç¥½ÃÇÏ¿´½À´Ï´Ù.
  ¿¬»êÀÚÀÇ ¿ì¼±¼øÀ§¿Í °áÇÕ¼ø¼­´Â ¸í¹éÈ÷ Á¤ÇØÁ® ÀÖÁö¸¸, ¼ö½ÄÀÇ Æò°¡¼ø¼­ (the order of evaluation of expression) ´Â ¸î¸î Á¤ÇØÁø ¿¹¿Ü¸¦ Á¦¿ÜÇϸé, ±× ¼ö½ÄÀÌ ºÎÀÛ¿ë (side effect) À» ³´´Â´ÙÇØµµ ±¸Ã¼ÀûÀ¸·Î Á¤ÀÇµÈ ¹Ù°¡ ¾ø½À´Ï´Ù (undefined). ÀÌ´Â ¿¬»êÀÚÀÇ Á¤Àǰ¡ ÇÇ¿¬»êÀÚ¸¦ Ưº°ÇÑ ¼ø¼­·Î Æò°¡ÇÑ´Ù°í º¸ÀåÇÏÁö ¾Ê´Â ÀÌ»ó, ÄÄÆÄÀÏ·¯ ¸¾´ë·Î ÇÇ¿¬»êÀÚµéÀ» Æò°¡ÇÏ°í ½ÉÁö¾î´Â ¼ø¼­»çÀÌ¿¡ ³¢¿ö³ÖÀ» ¼öµµ ÀÖ´Ù´Â ÀǹÌÀÔ´Ï´Ù. ÇÏÁö¸¸ °¢ ¿¬»êÀÚ´Â ÇÇ¿¬»êÀÚ¿¡ ÀÇÇØ »ý¼ºµÈ °ªµéÀ» ¼ö½ÄÀÇ ±¸¹®ºÐ¼® (parsing) ¿¡ µû¶ó ¹­½À´Ï´Ù.

¢º ¿ªÀÚ ÁÖ
  ±¸¹®ºÐ¼® (parsing) À̶õ, ÄÄÆÄÀÏ·¯ ȤÀº ÀÎÅÍÇÁ¸®ÅͰ¡ ÇÁ·Î±×·¥À» ÀÌÇØÇØ¼­ ±â°è¾î·Î ¹ø¿ªÇÏ´Â °úÁ¤ÁßÀÇ ÇѴܰè·Î, °¢ ¹®ÀåÀÇ ¹®¹ýÀû ±¸¼º¡¤±¸¹®À» ºÐ¼®ÇÏ´Â °úÁ¤À» ¸»ÇÕ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº A13 ÀýÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù.

  ÀÌ·¯ÇÑ ±ÔÄ¢Àº, ¼öÇÐÀûÀ¸·Î´Â ±³È¯¹ýÄ¢ (commutative) °ú °áÇÕ¹ýÄ¢ (associative) ¿¡ ¾Æ¹« ¹®Á¦°¡ ¾øÁö¸¸ ÄÄÇ»ÅÍ °è»ê»óÀ¸·Î´Â ½ÇÆÐÇÒ ¼ö ÀÖ´Â, ¼ö½ÄÀÇ Á¤¸®¿¡ Á¦ÇÑÀÌ °¡ÇØÁø´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ÇÏÁö¸¸ ÀÌ·¯ÇÑ º¯È­´Â Á¤¹Ðµµ ÇÑ°è ±ÙóÀÇ ºÎµ¿¼Ò¼ö¿Í ¿À¹öÇ÷ο찡 ¹ß»ýÇÒ ¼ö ÀÖ´Â »óȲ¿¡¼­¸¸ ¿µÇâÀ» ÁÖ°Ô µË´Ï´Ù.

¢º ¿ªÀÚ ÁÖ
  ¼öÇÐÀûÀ¸·Î´Â (a + b) / c ¿Í (a / c) + (b / c) °¡ ¿ÏÀüÈ÷ µ¿ÀÏÇÕ´Ï´Ù. ÇÏÁö¸¸ ÄÄÇ»ÅÍ·Î °è»êÇÒ ¶§´Â °¢ °è»ê°úÁ¤¿¡¼­ ÀÚ·áÇüÀÇ Ç¥Çö °¡´ÉÇÑ À¯È¿¼ýÀÚ°¡ Á¦ÇѵǾî Àֱ⠶§¹®¿¡ ±×·¸Áö ¸øÇÕ´Ï´Ù. ÇÏÁö¸¸ ÀÌ·¯ÇÑ ¿µÇâÀº ±ØÈ÷ ¹Ì¹ÌÇÏ°í ¿À¹öÇ÷ο찡 ÀϾ¸¸ÇÑ »óȲ¿¡¼­¾ß º¸Àδٴ ¶æÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯·Î ¿¹Àü¿¡´Â ÀÌ ¿µÇâÀ» ÃÖ¼ÒÈ­Çϱâ À§ÇØ ÇÁ·Î±×·¡¸Ó°¡ (a / c) + (b / c) ·Î ½áÁ־ ÄÄÆÄÀÏ·¯´Â (a + b) / c ·Î °è»êÇϵµ·Ï Çϱ⵵ Çß¾úÁö¸¸, ANSI ¿¡¼­´Â À̸¦ ±ÝÁöÇÏ°í ³ª¿ÍÀÖ´Â ¼ö½Ä ±×´ë·Î¸¦ ¹®¹ýºÐ¼® (parsing) ¿¡ µû¶ó °è»êÇϵµ·Ï Çß´Ù´Â ¸»ÀÔ´Ï´Ù.

  ¿À¹öÇ÷οì (overflow), ³ª´°¼À °Ë»ç (divide check), ¼ö½ÄÆò°¡¿¡¼­ ´Ù¸¥ ¿¹¿ÜÀûÀÎ »óȲµéÀ» ´Ù·ç´Â °Í¿¡ ´ëÇØ¼­´Â ¾ð¾î¿¡¼­ Á¤ÀÇÇÑ ¹Ù°¡ ¾ø½À´Ï´Ù (undefined). ´ëºÎºÐÀÇ C ÄÄÆÄÀÏ·¯µéÀº ºÎÈ£ÀÖ´Â Á¤¼ö¼ö½Ä (integral) °ú ´ëÀÔ¹®ÀÇ Æò°¡¿¡¼­ ¿À¹öÇ÷ο츦 ¹«½ÃÇÕ´Ï´Ù. ÇÏÁö¸¸ ÀÌ·¯ÇÑ ÇൿÀÌ º¸ÀåµÇÁö´Â ¾Ê½À´Ï´Ù. 0 À¸·Î ³ª´©´Â °æ¿ì (treatment of division by 0) ¿Í ¸ðµç ºÎµ¿ ¼Ò¼öÁ¡ÀÇ ¿¹¿ÜÀû »óȲ (all floating-point exception) Àº ÄÄÆÄÀÏ·¯¸¶´Ù ´Ù¸¨´Ï´Ù; ¶§¶§·Î ºñÇ¥ÁØ ¶óÀ̺귯¸® ÇÔ¼ö¿¡ ÀÇÇØ ÀÌ·¯ÇÑ °ÍµéÀÌ Á¶Á¤µÇ±âµµ ÇÕ´Ï´Ù.

  ¢¹ A7.1 Æ÷ÀÎÅÍ »ý¼º (Pointer Generation)
  ¼ö½ÄÀ̳ª ºÎºÐ¼ö½Ä (subexpression) ÀÇ µ¥ÀÌÅÍÇüÀÌ "¾î¶°ÇÑ µ¥ÀÌÅÍÇü T ÀÇ ¹è¿­Çü" À̸é, ±× °ªÀº ±× ¹è¿­ÀÇ Ã¹¹øÂ° ´ë»óü¸¦ °¡¸£Å°´Â Æ÷ÀÎÅÍÀÌ¸ç ¼ö½ÄÀÇ µ¥ÀÌÅÍÇüÀº TÇü Æ÷ÀÎÅÍ·Î ´ëüµË´Ï´Ù. ¸¸¾à ¼ö½ÄÀÌ ´ÜÇ× ¹øÁö¿¬»êÀÚ & ³ª ++, --, sizeof ÀÇ ÇÇ¿¬»êÀÚÀ̰ųª, ´ëÀÔ¿¬»êÀÚ, . ¿¬»êÀÚÀÇ ÁÂÃø ÇÇ¿¬»êÀÚ¶ó¸é ÀÌ·¯ÇÑ Çüº¯È¯Àº ÀϾÁö ¾Ê½À´Ï´Ù. À¯»çÇÏ°Ô "TÇüÀ» ¹ÝȯÇÏ´Â ÇÔ¼ö"ÇüÀÇ ¼ö½ÄÀº & ¿¬»êÀÚÀÇ ÇÇ¿¬»êÀÚ·Î »ç¿ëµÇ´Â °æ¿ì¸¦ Á¦¿ÜÇϸé "TÇüÀ» ¹ÝȯÇÏ´Â ÇÔ¼ö¸¦ °¡¸£Å°´Â Æ÷ÀÎÅÍ"·Î º¯È¯µË´Ï´Ù.

¢¹ A7.2 ±âº»¼ö½Ä (Primary Expression)
  ±âº» ¼ö½ÄÀº ¸íĪ, »ó¼ö, ¹®ÀÚ¿­, °ýÈ£¿¡ ½×ÀÎ ¼ö½ÄÀÔ´Ï´Ù.

primary-expression:
        identifier
        constant
        string
        ( expression )

  ¸íĪÀº ¾Æ·¡¿¡¼­ ¼³¸íÇÏ´Â °Íó·³ Àû´çÈ÷ ¼±¾ðµÇ¸é ±âº»¼ö½ÄÀÌ µË´Ï´Ù. ¸íĪÀÇ µ¥ÀÌÅÍÇüÀº ¼±¾ð¿¡ ÀÇÇØ ±ÔÁ¤µË´Ï´Ù. ¸íĪÀÌ ´ë»óü¸¦ ÂüÁ¶Çϰí, ¸íĪÀÇ µ¥ÀÌÅÍÇüÀÌ »ê¼úÇü, ±¸Á¶Ã¼, °ø¿ëü, Æ÷ÀÎÅͶó¸é Áº¯°ª (lvalue) ÀÌ µË´Ï´Ù.
  »ó¼ö ¿ª½Ã ±âº»¼ö½ÄÀ̸ç, ±×°ÍÀÇ µ¥ÀÌÅÍÇüÀº A2.5 Àý¿¡¼­ ¼³¸íÇÑ °Íó·³ ÇüÅ¿¡ ÀÇÁ¸ÇÕ´Ï´Ù.
  ¹®ÀÚ¿­ ¿ª½Ã ±âº»¼ö½ÄÀÔ´Ï´Ù. µ¥ÀÌÅÍÇüÀº º»·¡ ¹®Àڹ迭 ÀÌÁö¸¸, A7.1 Àý¿¡¼­ ÁÖ¾îÁø ±ÔÄ¢À» µû¶ó ÀϹÝÀûÀ¸·Î ¹®ÀÚÇü Æ÷ÀÎÅÍ·Î º¯È¯µÇ°í °á°ú´Â ¹®ÀÚ¿­ÀÇ Ã¹¹øÂ° ¹®ÀÚ¸¦ °¡¸£Å°´Â Æ÷ÀÎÅÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ º¯È¯Àº È®½ÇÇÑ ÃʱâÄ¡ (initializer) ¿¡¼­´Â ÀϾÁö ¾Ê½À´Ï´Ù; A8.7 Âü°í
  °ýÈ£¿¡ ½×ÀÎ ¼ö½ÄÀº °ýÈ£°¡ ¾ø´Â ¼ö½ÄÀÇ µ¥ÀÌÅÍÇü, °ª°ú µ¿ÀÏÇÑ ¼Ó¼ºÀ» °®´Â ±âº»¼ö½Ä ÀÔ´Ï´Ù. °ýÈ£ÀÇ Á¸Àç´Â ¼ö½ÄÀÇ Áº¯°ª ¿©ºÎ¿¡´Â ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù.

¢¹ A7.3 Á¢¹Ì¼ö½Ä (Postfix Expression)
  Á¢¹Ì¼ö½Ä¿¡¼­ ¿¬»êÀÚ´Â ¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊÀ¸·Î ¹­ÀÔ´Ï´Ù.

postfix-expression:
        primary-expression
        postfix-expression [ expression ]
        postfix-expression ( argument-expression-list opt )
        postfix-expression . identifier
        postfix-expression -> identifier
        postfix-expression ++
        postfix-expression --

argument-expression-list:
        assignment-expression
        argument-expression-list, assignment-expression

¢¹ A7.3.1 ¹è¿­ÂüÁ¶ (Array Reference)
  ¼ö½Ä µÚ¿¡, ´ë°ýÈ£ [] ¿¡ µÑ·¯½×ÀÎ ¼ö½ÄÀÌ ºÙ´Â Á¢¹Ì¼ö½ÄÀº ÷ÀÚ (subscript) ¿¡ ÀÇÇÑ ¹è¿­ÂüÁ¶ ¼ö½ÄÀÔ´Ï´Ù. µÎ ¼ö½ÄÁß Çϳª´Â ¹Ýµå½Ã TÇü Æ÷ÀÎÅÍ¿©¾ß Çϸç, ´Ù¸¥ Çϳª´Â Á¤¼ö (integral) ¿©¾ß ÇÕ´Ï´Ù. ÀÌ ¹è¿­Ã·ÀÚ ¼ö½ÄÀÇ µ¥ÀÌÅÍÇü (°á°ú) Àº °á±¹ TÇüÀÌ µË´Ï´Ù. ¼ö½Ä E1[E2] ´Â Á¤ÀÇ¿¡ ÀÇÇØ *((E1)+(E2)) ¿Í µ¿ÀÏÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ »çÇ×Àº A8.6.2 ÀýÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù.

¢¹ A7.3.2 ÇÔ¼öÈ£Ãâ (Function Call)
  ÇÔ¼öÈ£ÃâÀº ÇÔ¼ö ÁöÁ¤ÀÚ (function designator) ¶ó°í ºÒ¸®´Â Á¢¹Ì¼ö½ÄÀ¸·Î, µÚ¿¡ °ýÈ£¿¡ ½×¿© ½°Ç¥¿¡ ÀÇÇØ ºÐ¸®µÇ´Â »ý·«°¡´ÉÇÑ ´ëÀÔ¼ö½Ä ¸®½ºÆ®°¡ µû¶ó¿À¸ç, ÀÌ ¼ö½ÄÀº ÇÔ¼öÀÇ ¸Å°³º¯¼ö (parameter) ·Î ´ëÄ¡µË´Ï´Ù. ¸¸¾à ÇöÀçÀÇ Åë¿ë¹üÀ§¿¡¼­ ¼±¾ðÀÌ Á¸ÀçÇÏÁö ¾Ê´Â ¸íĪÀÌ µé¾î°£ ¼ö½ÄÀÌ ÀÖ´Ù¸é ÇÔ¼öÈ£ÃâÀ» ´ã°í ÀÖ´Â °¡Àå ¾ÈÂÊ ºí·°¿¡ ¾Æ·¡¿Í °°Àº ¼±¾ðÀÌ ÁÖ¾îÁø´Ù°í °£Áֵ˴ϴÙ.

extern int identifier();

ÇÔ¼öÈ£Ãâ Á¢¹Ì¼ö½ÄÀº (°¡´ÉÇÑ ¾Ï½ÃÀûÀÎ ¼±¾ð°ú A7.1 Àý¿¡¼­ ¼³¸íÇÑ Æ÷ÀÎÅÍ »ý¼ºÈÄ¿¡) TÇüÀ» ¹ÝȯÇÏ´Â ÇÔ¼ö Æ÷ÀÎÅÍ¿©¾ß Çϸç, ÇÔ¼ö È£ÃâÀÇ °ªÀº TÇüÀÌ µË´Ï´Ù.

  ÃÊÆÇ¿¡¼­´Â "ÇÔ¼ö"¶ó´Â µ¥ÀÌÅÍÇüÀÌ ¸Å¿ì Á¦ÇѵǾú°í, ÇÔ¼ö Æ÷ÀÎÅ͸¦ ÅëÇØ È£ÃâÇÒ ¶§ ¸íÈ®ÇÑ * ¿¬»êÀÚ°¡ ÇÊ¿äÇß¾ú½À´Ï´Ù. ANSI Ç¥ÁؾÈÀº, ÇÔ¼ö¿Í ÇÔ¼ö Æ÷ÀÎÅ͸¦ ÅëÇÑ ÇÔ¼öÈ£Ãâ¿¡ °°Àº ¹®¹ýÀ» Àû¿ëÇÏ´Â ÇöÁ¸ÇÏ´Â ÄÄÆÄÀÏ·¯ÀÇ °ü·Ê¸¦ µû¶ú½À´Ï´Ù. ¿¹ÀüÀÇ ¹®¹ýÀº ¾ÆÁ÷ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

  ÀÎÀÚ (argument) ´Â ÇÔ¼öÈ£Ãâ¿¡ ÀÇÇØ Àü´ÞµÇ´Â ¼ö½Ä¿¡ »ç¿ëµÇ´Â ¿ë¾îÀÔ´Ï´Ù; ¸Å°³º¯¼ö (parameter) ´Â ÇÔ¼ö Á¤ÀÇ¿¡ ÀÇÇØ ¹Þ´Â ÀÔÀå¿¡¼­, ȤÀº ÇÔ¼ö¼±¾ð¿¡ ±â¼úµÇ¾î ÀÖ´Â ÀÔ·Â ´ë»óü (ȤÀº ±×°ÍÀÇ ¸íĪ) ¿¡ ´ëÇØ »ç¿ëµÇ´Â ¿ë¾îÀÔ´Ï´Ù. "½Ç¸Å°³º¯¼ö (actual parameter)" ¿Í "Çü½Ä¸Å°³º¯¼ö (formal parameter)" ´Â ¶§·Î´Â °°Àº ¶æÀ¸·Î ¾²À̱⵵ ÇÕ´Ï´Ù.

¢º ¿ªÀÚ ÁÖ
  ¸»Àº º¹ÀâÇÏ°í ¸¹Áö¸¸, °á±¹ 'ÀÎÀÚ (½Ç¸Å°³º¯¼ö)' ¿Í '¸Å°³º¯¼ö (Çü½Ä¸Å°³º¯¼ö)' ÀÇ ¿ë¾î ¼³¸íÀ» Çϰí ÀÖ´Â °Í¿¡ ºÒ°úÇÕ´Ï´Ù.

  ÇÔ¼öÈ£ÃâÀ» ÁغñÇÏ´Â °úÁ¤¿¡¼­ °¢ ÀÎÀÚÀÇ º¹»çº»ÀÌ ¸¸µé¾îÁý´Ï´Ù; ¸ðµç ÀÎÀÚ Àü´ÞÀº °ª¿¡ ÀÇÇØ (by value) ÀÌ·ç¾îÁý´Ï´Ù. ÇÔ¼ö´Â ÀÎÀÚ¼ö½ÄÀÇ º¹»çº»ÀÎ ¸Å°³º¯¼ö ´ë»óüÀÇ °ªÀ» ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ °ªÀÇ º¯È­´Â ÀÎÀÚ (argument) ÀÇ ÀÔÀå¿¡¼­´Â ¾Æ¹«·± º¯È­¸¦ ÁÖÁö ¸øÇÕ´Ï´Ù. ±×·¯³ª ÀÎÀÚ¸¦ Æ÷ÀÎÅÍ ÇüÅ·ΠÀü´ÞÇØ ÇÔ¼ö°¡ ÀÎÀÚÀÇ °ªÀ» °£Á¢ÀûÀ¸·Î º¯°æÇÒ ¼ö´Â ÀÖ½À´Ï´Ù.
  ÇÔ¼ö°¡ ¼±¾ðµÇ´Â ¹æ¹ý¿¡´Â 2°¡Áö°¡ ÀÖ½À´Ï´Ù. Çö´ëÀûÀÎ ¹æ½Ä (new style) ¿¡¼­ ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀº ¸í¹éÈ÷ µå·¯³ª°í ÇÔ¼ö µ¥ÀÌÅÍÇüÀÇ ÀϺκÐÀÔ´Ï´Ù; ÀÌ·¯ÇÑ ¼±¾ðÀ» ÇÔ¼ö¿øÇü (function prototype) À̶ó°í ºÎ¸¨´Ï´Ù. °íÀüÀûÀÎ ¹æ½Ä (old style) ¿¡¼­ ¸Å°³º¯¼ö´Â ¸í½ÃµÇÁö ¾Ê½À´Ï´Ù. ÇÔ¼ö¼±¾ðÀº A8.6.3 °ú A10.1 Àý¿¡¼­ ´õ ÀÚ¼¼È÷ ´Ù·ç°Ú½À´Ï´Ù.
  ¸¸¾à È£ÃâµÇ´Â Åë¿ë¹üÀ§ÀÇ ÇÔ¼ö¼±¾ðÀÌ °íÀüÀûÀÎ ¹æ½ÄÀ̸é, ±âº»ÀûÀÎ ÀÎÀÚÁø±Þ (argument promotion) ÀÌ ¾Æ·¡¿Í °°ÀÌ Àû¿ëµË´Ï´Ù: Á¤¼öÁø±Þ (interger promotion) ÀÌ °¢°¢ÀÇ Á¤¼öÇü ÀÎÀÚ (integral) ¿¡ ¼öÇàµÇ°í, float Çü ÀÎÀÚµéÀº double ÇüÀ¸·Î º¯È¯µË´Ï´Ù. ÀÎÀÚÀÇ °³¼ö°¡ ÇÔ¼öÁ¤ÀÇ¿¡ ÀÖ´Â ¸Å°³º¯¼öÀÇ °³¼ö¿Í ¸ÂÁö ¾Ê°Å³ª, Áø±ÞÈÄÀÇ ÀÎÀÚÀÇ µ¥ÀÌÅÍÇüÀÌ ´ëÀÀÇÏ´Â ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇü°ú ¸ÂÁö ¾Ê´Â °æ¿ì, ÇÔ¼öÈ£ÃâÀÇ ¿µÇâÀº Á¤ÀǵǾî ÀÖÁö ¾Ê½À´Ï´Ù (undefined). µ¥ÀÌÅÍÇü ÀÏÄ¡ (agreement) ¿¡ ´ëÇÑ »çÇ×Àº ÇÔ¼öÀÇ Á¤Àǰ¡ Çö´ëÀûÀÎÁö °íÀüÀûÀÎÁö¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù. ¸¸¾à¿¡ ÇÔ¼öÀÇ Á¤Àǰ¡ °íÀüÀûÀ̶ó¸é, ÀÎÀÚÀÇ Áø±ÞµÈ µ¥ÀÌÅÍÇü°ú ¸Å°³º¯¼öÀÇ Áø±ÞµÈ µ¥ÀÌÅÍÇü »çÀÌ¿¡ ºñ±³°¡ ÀÌ·ç¾îÁý´Ï´Ù. ¸¸¾à ÇÔ¼öÁ¤Àǰ¡ Çö´ëÀûÀÎ ¹æ½ÄÀ̶ó¸é, ÀÎÀÚÀÇ Áø±ÞµÈ µ¥ÀÌÅÍÇü°ú Áø±ÞÀÌ ÀÌ·ç¾îÁöÁö ¾ÊÀº ¸Å°³º¯¼ö ÀÚüÀÇ µ¥ÀÌÅÍÇüÀÌ °°¾Æ¾ß ÇÕ´Ï´Ù.
  ÇÔ¼ö¼±¾ðÀÌ Çö´ëÀû ¹æ½ÄÀ̸é, ÀÎÀÚ°¡ ÇÔ¼ö¿øÇüÀÇ ´ëÀÀÇÏ´Â ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀ¸·Î ´ëÀԵǵíÀÌ º¯È¯µË´Ï´Ù. ÀÎÀÚÀÇ °³¼ö´Â ÇÔ¼ö¼±¾ðÀÇ ¸Å°³º¯¼ö°¡ »ý·«ºÎÈ£ (, ...) ·Î ³¡³ªÁö ¾Ê´Â ÀÌ»ó, ¸íÈ®È÷ ±â¼úµÈ ¸Å°³º¯¼öÀÇ °³¼ö¿Í °°¾Æ¾ß ÇÕ´Ï´Ù. ¸Å°³º¯¼ö°¡ »ý·«ºÎÈ£·Î ³¡³ª´Â °æ¿ì, ÀÎÀÚÀÇ °³¼ö´Â ¸Å°³º¯¼ö¿Í °°°Å³ª ȤÀº ´õ ¸¹¾Æ¾ß¸¸ ÇÕ´Ï´Ù; ¸íÈ®È÷ ±â¼úµÈ ¸Å°³º¯¼öÀÇ °³¼ö¸¦ ³Ñ¾î¼­´Â ÀÎÀڵ鿡´Â ¾Õ¿¡¼­ À̾߱âÇÑ ±âº»ÀûÀÎ ÀÎÀÚÁø±Þ (default argument promotion) ÀÌ Àû¿ëµË´Ï´Ù. ¸¸¾à ÇÔ¼öÀÇ Á¤Àǰ¡ °íÀüÀû ¹æ½ÄÀ̶ó¸é, È£Ãâ½Ã¿¡ º¸ÀÌ´Â ÇÔ¼ö¿øÇüÀÇ ¸Å°³º¯¼ö µ¥ÀÌÅÍÇüÀº ÀÎÀÚÁø±ÞÀÌ ÀϾ ÈÄÀÇ ÇÔ¼öÁ¤ÀÇ¿¡¼­ÀÇ ´ëÀÀÇÏ´Â ¸Å°³º¯¼ö¿Í °°¾Æ¾ß ÇÕ´Ï´Ù.

  ÀÌ·¯ÇÑ ±ÔÄ¢µéÀº Çö´ëÀû ¹æ½Ä°ú °íÀüÀû ¹æ½ÄÀ» ¸ðµÎ ¼ö¿ëÇϱ⠶§¹®¿¡ º¹ÀâÇÕ´Ï´Ù. µÎ ¹æ½ÄÀ» È¥ÇÕÇØ »ç¿ëÇÏ´Â °ÍÀº °¡´ÉÇϸé ÇÇÇØ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

  ÀÎÀÚÀÇ Æò°¡¼ø¼­ (the order of evalution of argument) ´Â µû·Î Á¤ÇØÁ® ÀÖÁö ¾Ê½À´Ï´Ù (unspecified); ÄÄÆÄÀÏ·¯¸¶´Ù ´Ù¸£´Ù´Â ÀǹÌÀÔ´Ï´Ù. ÇÏÁö¸¸ ÀÎÀÚ¿Í ÇÔ¼öÁöÁ¤ÀÚ (function designator) ´Â ±× ºÎÀÛ¿ë (side effect) À» Æ÷ÇÔÇØ, ÇÔ¼ö¿¡ ÁøÀÔÇϱâ Àü¿¡ ¸ðµÎ Æò°¡µË´Ï´Ù. ¾î¶°ÇÑ ÇÔ¼ö¶óµµ Àç±ÍÈ£Ãâ (recursive call) ÀÌ °¡´ÉÇÕ´Ï´Ù.

¢¹ A7.3.3 ±¸Á¶Ã¼ ÂüÁ¶ (Structure Reference)
  Á¡µÚ¿¡ ¸íĪÀÌ µû¶ó¿À´Â ¼ö½ÄÀº Á¢¹Ì¼ö½Ä ÀÔ´Ï´Ù. ù¹øÂ° ÇÇ¿¬»êÀÚ ¼ö½ÄÀº ¹Ýµå½Ã ±¸Á¶Ã¼³ª °ø¿ëü¿©¾ß Çϰí, ¸íĪÀº ±¸Á¶Ã¼³ª °ø¿ëüÀÇ ¸â¹ö À̸§À̾î¾ß ÇÕ´Ï´Ù. ¼ö½ÄÀÇ °ªÀº ±¸Á¶Ã¼³ª °ø¿ëüÀÇ ¸â¹öÀ̰í, µ¥ÀÌÅÍÇüÀº ±× ¸â¹öÀÇ µ¥ÀÌÅÍÇü ÀÔ´Ï´Ù. ù¹øÂ° ¼ö½ÄÀÌ Áº¯°ªÀ̰í, µÎ¹øÂ° ¼ö½ÄÀÇ µ¥ÀÌÅÍÇüÀÌ ¹è¿­ÇüÀÌ ¾Æ´Ï¶ó¸é ¼ö½ÄÀº Áº¯°ªÀÌ µË´Ï´Ù.
  È­»ìÇ¥ (->) ¿Í ¸íĪÀÌ µÚ¿¡ ºÙ´Â ¼ö½ÄÀº Á¢¹Ì¼ö½Ä ÀÔ´Ï´Ù. ù¹øÂ° ¼ö½ÄÀº ±¸Á¶Ã¼³ª °ø¿ëü¸¦ °¡¸£Å°´Â Æ÷ÀÎÅÍ¿©¾ß Çϰí, ¸íĪÀº ±¸Á¶Ã¼³ª °ø¿ëüÀÇ ¸â¹ö¿©¾ß ÇÕ´Ï´Ù. °á°ú´Â Æ÷ÀÎÅÍ ¼ö½ÄÀÌ °¡¸£Å°´Â ±¸Á¶Ã¼³ª °ø¿ëüÀÇ ¸â¹ö¸¦ ÂüÁ¶ÇÕ´Ï´Ù; °á°ú´Â µ¥ÀÌÅÍÇüÀÌ ¹è¿­ÇüÀÌ ¾Æ´Ï¶ó¸é Áº¯°ªÀÔ´Ï´Ù.
  ¼ö½Ä E1->MOS ´Â (*E1).MOS ¿Í °°½À´Ï´Ù. ±¸Á¶Ã¼¿Í °ø¿ëü´Â A8.3 Àý¿¡¼­ ³íÀÇÇÕ´Ï´Ù.

  ÃÊÆÇ¿¡¼­ ÀÌ·¯ÇÑ ¼ö½Ä¿¡ ÀÖ´Â ¸â¹ö À̸§ÀÌ Á¢¹Ì ¼ö½Ä¿¡¼­ ¾ð±ÞµÈ ±¸Á¶Ã¼³ª °ø¿ëü¿¡ ¼ÓÇØ¾ß¸¸ ÇÑ´Ù´Â °ÍÀÌ ÀÌ¹Ì ±ÔÄ¢À¸·Î µÇ¾î ÀÖ¾ú½À´Ï´Ù. ±×·¯³ª ÀÌ ±ÔÄ¢ÀÌ Á¦´ë·Î ÁöÄÑÁöÁö ¾Ê¾Æ¼­ ÇöÀçÀÇ ÄÄÆÄÀÏ·¯³ª ANSI ¿¡¼­´Â ÀÌ ±ÔÄ¢À» °­·ÂÈ÷ Áö۵µ·Ï Çϰí ÀÖ½À´Ï´Ù.

¢¹ A7.3.4 Á¢¹ÌÁõ°¡ (Postfix Incrementation)
  ++, -- ¿¬»êÀÚ°¡ µÚµû¶ó¿À´Â ¼ö½ÄÀº Á¢¹Ì¼ö½Ä ÀÔ´Ï´Ù. ¼ö½ÄÀÇ °ªÀº ÇÇ¿¬»êÀÚÀÇ °ªÀÔ´Ï´Ù. °ªÀÌ Á¤ÇØÁø ÈÄ¿¡, ÇÇ¿¬»êÀÚ´Â 1¸¸Å­ Áõ°¡(++)µÇ°Å³ª, °¨¼Ò(--)µË´Ï´Ù. ÇÇ¿¬»êÀÚ´Â Áº¯°ªÀ̾î¾ß ÇÕ´Ï´Ù; ÇÇ¿¬»êÀÚ¿Í ¿¬»êÀÇ ¼¼¼¼ÇÑ °Íµé¿¡ ´ëÇÑ Á¦¾àÀº µ¡¼À¿¬»êÀÚ (A7.7) ¿Í ´ëÀÔ¿¬»êÀÚ (A7.17) ¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù. °á°ú´Â Áº¯°ªÀÌ ¾Æ´Õ´Ï´Ù.



ÀÌÀü [¡ã ¸ÇÀ§·Î]
[¢Ê ¸ñÂ÷·Î]
´ÙÀ½