¹ØÓÚC/C++ ±í´ïʽÇóֵ˳Ðò 䶨Òå
±í´ïʽµÄ¸±×÷ÓÃ
ÔËËã·ûµÄÓÅÏȼ¶Óë½áºÏÐԹ涨Á˱í´ïʽÖÐÏàÁÚÁ½¸öÔËËã·ûµÄÔËËã´ÎÐò£¬µ«¶ÔÓÚË«Ä¿
ÔËËãµÄ²Ù×÷Êý£¬C++ûÓй涨ËûÃǵļÆËã´ÎÐò¡£ÀýÈ磬¶ÔÓÚ±í´ïʽ£º
exp1 + exp2;
ÏȼÆËã exp1 »¹ÊÇ exp2£¿²»Í¬µÄ±àÒëÆ÷Óв»Í¬µÄ×ö·¨¡£
ÔÚÊýѧÉÏ£¬¶ÔÓÚË«Ä¿ÔËËã·û£¬²»ÂÛÏȼÆËãÄÄÒ»¸ö²Ù×÷Êý£¬ÒªÇó×îÖÕ¼ÆËã½á¹ûÒ»Ñù¡£
ÔÚ C++ÖУ¬ÔÚ¼ÆËãÒ»¸ö²Ù×÷Êýʱ£¬¸Ã¼ÆËã»á¸Ä±ä£¨Ó°Ï죩ÁíÒ»¸ö²Ù×÷Êý£¬´Ó¶øµ¼ÖÂÒò²Ù
×÷ÊýµÄ²»Í¬¼ÆËã´ÎÐò²úÉú²»Í¬µÄ×îÖÕ¼ÆËã½á¹û¡£¶ÔÓÚÒò²Ù×÷Êý¼ÆËãµÄ´ÎÐò²»Í¬²úÉú²»Í¬
½á¹ûµÄ±í´ïʽΪ´ø¸±×÷Óõıí´ïʽ¡£ÔÚ¼ÆËãʱ»áÓ°ÏìÆäËû²Ù×÷ÊýµÄÖµ£¬ÒýÆð¸±×÷ÓõÄÔË
Ëã·ûΪ´ø¸±×÷ÓõÄÔËËã·û¡£Èç++¡¢– –ÒÔ¼°¸÷ÖÖ¸³ÖµÔËËã·ûΪ´ø¸±×÷ÓõÄÔËËã·û¡£ÀýÈ磺
x=1,(x+2)*(++x)
ÏȼÆËã x+2 ±í´ïʽµÄֵΪ 6¡£
ÈôÏȼÆËã++x£¬ÓÉÓÚÐÞ¸ÄÁË x+2 ÖÐ x µÄÖµ£¬¼ÆËã½á¹ûΪ£¸¡£
ÔÚ C++Öй涨£¬ÏȼÆËãÂß¼Ó루&&£©ºÍÂß¼»ò£¨||£©µÄµÚÒ»¸ö²Ù×÷Êý£¬ÔÙ¼ÆËãµÚ¶þ
¸ö²Ù×÷Êý£¬ÒÔ±ã½øÐжÌ·ÇóÖµ¡£Ìõ¼þ£¨?:£©¡¢¶ººÅ£¨,£©ÔËËã·ûÒ²¹æ¶¨Á˲Ù×÷ÊýµÄ¼ÆËã´ÎÐò£¬
³ý´ËÒÔÍ⣬ÆäËûÔËËã·ûûÓй涨²Ù×÷ÊýµÄ¼ÆËã´ÎÐò£¬¼ÆËã´ÎÐòÓɾßÌåµÄ±àÒëÆ÷¾ö¶¨¡£Òò
´ËÔÚº¬ÕâЩÔËËã·ûµÄ±í´ïʽÖУ¬±ÜÃâÔÚ²Ù×÷ÊýÖÐÒýÈë´ø¸±×÷ÓõÄÔËËã·û¡£
±í´ïʽÇóֵ˳Ðò²»Í¬ÓÚÔËËã½áºÏÐÔºÍÓÅÏȼ¶¡£ÏÂÃæÊÇÒ»¸ö¾µäÀý×Ó£¬±» ISO C99/ C++98 /03 Èý´ó±ê×¼Ã÷È·Ìáµ½£ºËûµÄ½á¹ûÊDz»È·¶¨(unspecified) µÄ¡£
i = ++i + 1; // The behavior is unspecified
ÔÚ½éÉܸÅÄî֮ǰ£¬ÎÒÃÇÏȽâÊÍÒ»ÏÂËüµÄ½á¹û¡£Õâ¸ö±í´ïʽ( expression )°üº¬3¸ö×Ó±í´ïʽ( subexpression ):
e1 = ++i
e2 = e1 + 1
i = e2
ÕâÈý¸ö×Ó±í´ïʽ¶¼Ã»ÓÐ˳Ðòµã( sequence point )£¬¶ø ++ i ºÍ i = e3 ¶¼ÊÇÓи±×÷ÓÃ( side effect )µÄ±í´ïʽ¡£ÓÉÓÚûÓÐ˳Ðòµã£¬ÓïÑÔ²»±£Ö¤ÕâÁ½¸ö¸±×÷ÓõÄ˳Ðò¡£
¸ü¼Ó¿ÉŵÄÊÇ£¬Èç¹ûi ÊÇÒ»¸öÄÚ½¨ÀàÐÍ£¬²¢ÔÚÏÂÒ»¸ö˳Ðòµã֮ǰ±»¸Äд³¬¹ýÒ»´Î£¬ÄÇô½á¹ûÊÇ䶨Òå(undefined)µÄ£¡±ÈÈç±¾ÀýÖÐÈç¹ûÓÐ:
int i = 0x1000fffe;
i = ++i + 1; // The result is undefined!!
ÄãÒ²Ðí»áÈÏΪËûµÄ½á¹ûÊǼÓ1 »òÕß¼Ó2£¬Æäʵ¸üÔã¸â —— ½á¹û¿ÉÄÜÊÇ 0x1001ffff ¡£ËûµÄ¸ß×Ö½Ú½ÓÊÜÁËÒ»¸ö¸±×÷ÓõÄÄÚÈÝ£¬¶øµÍ×Ö½ÚÔò½ÓÊÜ
Ïà¹ØÎĵµ£º
ÊÂÇéÓ¦¸Ã±»×öµÃ¾¡¿ÉÄܵļòµ¥£¬µ«²»ÊÇÈÎÒâµØ¼òµ¥»¯¡£
¨D¨D°®Òò˹̹
ËäÈ»×öºÃµÄ³ÌÐòÄÜ°´ÏîÄ¿ÐèÇóÕýÈ·ÔËÐе½×îºóÒ»²½£¬µ«ÔÚǶÈëʽϵͳ¿ª·¢Öв¢²»×ÜÊÇÄܳɹ¦µÄ¡£ÓÉÓڵͳɱ¾µÄÐèÒªÓ²¼þÉè¼ÆÕß¼¸ºõ²»¿ÉÄÜÉè¼Æ³ö×ã¹»µÄÄÚ´æºÍ´¦ÀíÆ÷ÐÔÄÜÀ´Ê¹µÃ³ÌÐòÄܱ»ÔËÐС£µ±È»£¬ÔÚÈí¼þ¿ª·¢¹ý³ÌÖÐʹµÃ³ÌÐòÄܹ»ÕýÈ·ÔËÐÐÊǸüÖØÒªµÄ¡£ÎªÁËÕâµã£¬Í¨³£ ......
1.×Ô¶¨ÒåÊä³ö
Ïë±Ø´ó¼Ò¶¼ÓÐÀûÓÃÊä³öº¯ÊýÈçprintfÀ´°ïÖúÎÒÃǵ÷ÊÔ³ÌÐòµÄ¾Àú£¬ÕâÊÇÒ»ÖֱȽÏÔʼµÄ³ÌÐòµ÷ÊÔ¸¨Öú·½·¨£¬ÔÚLinuxÏÂÒ²¿ÉÒÔΪÎÒÃÇËùÓᣲ»¹ýÕâÖÖ·½·¨ÓÐÒ»¸öÃ÷ÏÔµÄȱµã£¬¾ÍÊÇÔÚµ÷ÊÔÍêºóÎÒÃDZØÐë×¢ÊÍ»òɾ³ýµôÕâЩ¸¨Öú´úÂë¡£Linux CÌṩÁË-DDEBUGÕâ¸ö±àÒë±ê¼ÇÀ´¶¨ÒåDEBUGÕâ¸ö·ûºÅ£¬½èÖúÓڸ÷ûºÅ£¬ÎÒÃÇ¿ÉÒÔÔÚÓ¦Ó ......
ÔÙÉÏһƪ£¬ÎÒÃǽéÉÜÁË»ù±¾µ÷ÊÔ¡£Ö®Ç°Ò²ËµÁË£¬Ö®ËùÒ԰ѵ÷ÊÔ·ÅÔÚÇ°Ãæ½²ÊÇÒòΪºóÃæµÄÎÄÕ»ù±¾¶¼»áÓõ½µ÷ÊÔ¡£¹Û²ìÎÒÃǵijÌÐòµ½µ×·¢ÉúÁËʲô¡£ÈÃÎÒÃÇÄܹ»Ö±½ÓÃ÷Á˵Ŀ´Çå³þÎÊÌâµÄ±¾ÖÊ¡£±¾Æª½«ÉîÈëÒ»µã½éÉÜÖ¸ÕëÕâ¸öÈÃÎÞÊý³õѧÕßη¾åµÄ¶«Î÷¡£Ï£Íû´ó¼ÒÔÙ¿´Í걾ƪ֮ºóÄܶÔÖ¸ÕëÓÐеÄÈÏʶ£¬Ö®ºó²»ÔÙ¾åÅÂËü¡£¾õµÃËü¾ÍÄÇô»ØÊ¡£ÄÇÏÂÃæÎÒ ......
¡¡¡¡1.¸ÅÊö
¡¡¡¡Ðí¶à³õѧÕ߶ÔC/C++ÓïÑÔÖеÄvoid¼°voidÖ¸ÕëÀàÐͲ»ÉõÀí½â£¬Òò´ËÔÚʹÓÃÉϳöÏÖÁËһЩ´íÎó¡£±¾ÎĽ«¶Ôvoid¹Ø¼ü×ÖµÄÉî¿Ìº¬Òå½øÐнâ˵£¬²¢ÏêÊövoid¼°voidÖ¸ÕëÀàÐ͵ÄʹÓ÷½·¨Óë¼¼ÇÉ¡£
¡¡¡¡2.voidµÄº¬Òå
¡¡¡¡voidµÄ×ÖÃæÒâ˼ÊÇ“ÎÞÀàÐÍ”£¬void *ÔòΪ“ÎÞÀàÐÍÖ¸Õ딣¬void *¿ÉÒÔÖ¸ÏòÈκÎÀàÐ͵ÄÊ ......
×î½üά»¤Logger¹²Ïí¿âµÄʱºòÐÂÔöÁ˸üÈËÐÔ»¯µÄ×Ô¶¯´´½¨¸÷¼¶Ä¿Â¼µÄ¹¦ÄÜ£¬ÏÂÃæÊÇÎÒʵÏÖ´´½¨ÖîÈç "c:\a\b\c\d\yeah.log"Öеĸ÷¼¶Îļþ¼ÐµÄ¹ý³Ì£¬Çë´ó¼ÒÖ¸½Ì£¡
BOOL CreateDirectoryInPathW(const wchar_t *sLogPath)
{
static BOOL bRet = 0;
CString csFullDir(_T(""));//Ôʼȫ·¾¶
int nLen = 0;//ÔÊ ......