Previous: Incr, Up: Arithmetic [Contents][Index]
À°¿ô¼°¤Ïeval
¤ò»È¤Ã¤Æ·×»»¤·¤Þ¤¹¡£
eval(expression, opt radix, opt width)
¤³¤Î¥Þ¥¯¥í¤Ïexpression¤ÎÃͤËŸ³«¤µ¤ì¤Þ¤¹¡£
¼°¡Êexpression¡Ë¤Ë¤Ï¼¡¤Î±é»»»Ò¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ ¥ê¥¹¥È¤ÏÍ¥Àè½ç°Ì¤Î¹â¤¤½ç¤Ëʤó¤Ç¤¤¤Þ¤¹¡£
-
ñ¹àº¹¡Êunary minus¡Ë
**
Îß¾è¡Êexponentiation¡Ë
* / %
ÀÑ¡Êmultiplication¡Ë¡¢¾¦¡Êdivision¡Ë¡¢¾ê;¡Êmodulo¡Ë
+ -
Ï¡Êaddition¡Ë¡¢º¹¡Êsubtraction¡Ë
<< >>
º¸¥·¥Õ¥È¡Êshift left¡Ë¡¢±¦¥·¥Õ¥È¡Êshift right¡Ë
== != > >= < <=
´Ø·¸±é»»»Ò¡Êrelational operator¡Ë
!
ÏÀÍýÈÝÄê¡Êlogical negation¡Ë
~
¥Ó¥Ã¥È¤´¤È¤ÎÏÀÍýÈÝÄê¡Êbitwise negation¡Ë
&
¥Ó¥Ã¥È¤´¤È¤ÎÏÀÍýÀÑ¡Êbitwise and¡Ë
^
¥Ó¥Ã¥È¤´¤È¤ÎÇÓ¾ŪÏÀÍýÏ¡Êbitwise exclusive-or¡Ë
|
¥Ó¥Ã¥È¤´¤È¤ÎÏÀÍýÏ¡Êbitwise or¡Ë
&&
ÏÀÍýÀÑ¡Êlogical and¡Ë
||
ÏÀÍýÏ¡Êlogical or¡Ë
Îß¾è¡Êexponentiation¡Ë¤ò½ü¤¤¤¿¤¹¤Ù¤Æ¤Î±é»»»Ò¤Ïº¸·ë¹ç¡Êleft associative¡Ë¤ò¤·¤Þ¤¹¡£
m4
¤Î¼ÂÁõ¤Ë¤Ï‘^’¤òÎß¾è¡Êexponentiation¡Ë±é»»»Ò¤ÎÂåÍѤȤ·¤Æ»È¤¦¤â¤Î
¤¬Â¿¤¯¤¢¤ê¤Þ¤¹¤¬¡¢‘^’¤ò¥Ó¥Ã¥È¤´¤È¤ÎÇÓ¾ŪÏÀÍýÏ¡Êbitwise exclusive-or¡Ë
¤Ë»È¤Ã¤Æ¤¤¤ë¼ÂÁõ¤â¿¤¯¤¢¤ê¤Þ¤¹¡£GNU m4
¤Ç¤Ï¡¢¤«¤Ä¤Æ‘^’¤ÏÎß¾è¤ò¹Ô¤¦
±é»»»Ò¤Ç¤·¤¿¤¬¡¢Æ°ºî¤ÎÊѹ¹¤ò¹Ô¤¤¡¢¸½ºß¤Ï¥Ó¥Ã¥È¤´¤È¤ÎÇÓ¾ŪÏÀÍýϤò¹Ô¤¦
±é»»»Ò¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
ÆÃÊ̤ÊÀÜÆ¬¼¡Êprefix¡Ë¤¬¤Ä¤¤¤Æ¤¤¤Ê¤¤¿ô»ú¤Ï10¿Ê¿ô¤È¤Ê¤ê¤Þ¤¹¡£ ‘0’¤Î¤ß¤ÎÀÜÆ¬¼¤Ï8¿Ê¿ô¤Î»Ï¤Þ¤ê¤òɽ¤·¤Þ¤¹¡£ ‘0x’¤Ï16¿Ê¿ô¤Î»Ï¤Þ¤ê¤òɽ¤·¤Þ¤¹¡£ ‘0b’¤Ï2¿Ê¿ô¤Î»Ï¤Þ¤ê¤òɽ¤·¤Þ¤¹¡£ ‘0r’¤Ï1¤«¤é36¤Þ¤Ç¤ÎǤ°Õ¤Î´ð¿ô¤Çɽ¸½¤·¤¿¿ô»ú¤Î»Ï¤Þ¤ê¤òɽ¤·¤Þ¤¹¡£ ‘0r’¤Î¸å¤Ë¤Ï10¿Ê¿ô¤Çɽ¸½¤·¤¿´ð¿ô¡¢¥³¥í¥ó¡Ê:¡Ë¡¢ ¤ª¤è¤Ó¿ôÃͤòɽ¤¹¿ô»úÎó¤ò³¤±¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ ¤¤¤º¤ì¤Î´ð¿ô¤Çɽ¤¹¤Ë¤·¤Æ¤â¿ô»ú¤È¤·¤Æ¤Ï‘0’, ‘1’, ‘2’, …¤ò»È¤¤¡¢‘9’¤«¤é¾å¤Ï‘a’, ‘b’ … ‘z’¤Þ¤Ç¤ò ¿ô»ú¤È¤·¤Æ»È¤¤¤Þ¤¹¡£ ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï´ð¿ô¤òɽ¤¹ÀÜÆ¬¼¤ª¤è¤Ó¿ôÃͤòɽ¤¹¿ô»úÎó¤Î¤Ê¤«¤Ç ¶èÊ̤ʤ¯»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
Éôʬ¼°¤ò¥°¥ë¡¼¥×²½¤¹¤ë¤¿¤á¤ËɬÍפʤȤ¤Ï¥«¥Ã¥³¤ò»È¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
´Ø·¸±é»»»Ò¤Ï´Ø·¸¤¬¿¿¤Î¤È¤¤Ï1
¤òÊÖ¤·¡¢µ¶¤Î¤È¤¤Ï0
¤òÊÖ¤·¤Þ¤¹¡£
eval
¤Î»ÈÍÑÎã¤ò¤¤¤¯¤Ä¤«¼¡¤Ëµó¤²¤Þ¤¹¡£
eval(-3 * 5) ⇒-15 eval(index(`Hello world', `llo') >= 0) ⇒1 define(`square', `eval(($1)**2)') ⇒ square(9) ⇒81 square(square(5)+1) ⇒676 define(`foo', `666') ⇒ eval(`foo'/6) error→51.eval:14: m4: Bad expression in eval: foo/6 ⇒ eval(foo/6) ⇒111
ºÇ¸å¤«¤é2ÈÖÌܤÎÎ㤬¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ëeval
¤¬¥Þ¥¯¥í̾¤ò¾¡¼ê¤ËŸ³«¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£
Î㤨¤½¤ì¤é¤¬Í¸ú¤Ê¼°(¤â¤·¤¯¤Ï͸ú¤Ê¼°¤Î°ìÉô)¤ËŸ³«¤µ¤ì¤ë¤Ë¤·¤Æ¤â¤Ç¤¹¡£
¤·¤¿¤¬¤Ã¤ÆÁ´¤Æ¤Î¥Þ¥¯¥í¤Ïeval
¤ËÅϤµ¤ì¤ëÁ°¤ËŸ³«ºÑ¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
radix¤ò»ØÄꤹ¤ë¤ÈŸ³«¸å¤Î¥Æ¥¥¹¥È¤Ç¤Ï¤½¤Î´ð¿ô¤¬»È¤ï¤ì¤Þ¤¹¡£
¥Ç¥Õ¥©¥ë¥È¤Î´ð¿ô¤Ï10¤Ç¤¹¡£
eval
¤Î·ë²Ì¤Ï¾ï¤ËÉ乿ÉÕ¤¡Êsigned¡Ë¤ÎÃͤǤ¢¤ë¤È²ò¼á¤µ¤ì¤Þ¤¹¡£
°ú¿ôwidth¤ÏºÇÄã¸Â¤Î½ÐÎÏÉý¤ò»ØÄꤷ¤Þ¤¹¡£
Ÿ³«¸å¤Î¥Æ¥¥¹¥È¤¬Í׵ᤵ¤ì¤¿Éý¤Ë¤Ê¤ë¤è¤¦¤Ë
·ë²Ì¤Ë¤Ï0¤¬Ëä¤áÁð¡Êzero-padded¡Ë¤È¤·¤ÆÉղ䵤ì¤Þ¤¹¡£
eval(666, 10) ⇒666 eval(666, 11) ⇒556 eval(666, 6) ⇒3030 eval(666, 6, 10) ⇒0000003030 eval(-666, 6, 10) ⇒-000003030
radix¤Ï36¤è¤êÂ礤¯¤Æ¤Ï¤¤¤±¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
ÁȤ߹þ¤ß¥Þ¥¯¥íeval
¤Ï°ú¿ô¤òÍ¿¤¨¤¿¤È¤¤À¤±Ç§¼±¤µ¤ì¤Þ¤¹¡£