Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

¶ÔCµÄprintfº¯ÊýµÄ¿É±ä³¤²ÎÊýʵÏֵķÖÎö

ת×Ô¡¾http://tech.ddvip.com/2008-08/121825219252306_3.html¡¿
ÄÚÈÝÕªÒª£ºÒ»Ö±ÒÔÀ´¶¼¾õµÃprintfËƺõÊÇcÓïÑÔ¿âÖй¦ÄÜ×îÇ¿´óµÄº¯ÊýÖ®Ò»£¬²»½öÒòΪËüÄܸñʽ»¯Êä³ö£¬¸üÔÚÓÚËüµÄ²ÎÊý¸öÊýûÓÐÏÞÖÆ£¬Òª¼¸¸ö¾Í¸ø¼¸¸ö£¬À´Õß²»¾Ü¡£printfÕâÖÖ¶Ô²ÎÊý¸öÊýºÍ²ÎÊýÀàÐ͵ÄÇ¿´óÊÊÓ¦ÐÔ£¬ÈÃÈ˲úÉúÁ˶ÔËü½øÐÐ̽Ë÷µÄŨºñÐËȤ¡£
¡¾1. ʹÓÃÇéÐÎ ¡¿
int a =10;
double b = 20.0;
char *str = "Hello world";
printf("begin print
");
printf("a=%d, b=%.3f, str=%s", a, b, str);
...

´ÓprintfµÄʹÓÃÇé¿öÀ´¿´£¬ÎÒÃDz»ÄÑ·¢ÏÖÒ»¸ö¹æÂÉ£¬¾ÍÊÇÎÞÂÛÆä¿É±äµÄ²ÎÊýÓжàÉÙ¸ö£¬printfµÄµÚÒ»¸ö²ÎÊý×ÜÊÇÒ»¸ö×Ö·û´®¡£¶øÕýÊÇÕâµÚÒ»¸ö²ÎÊý£¬Ê¹µÃËü¿ÉÒÔÈ·ÈϺóÃ滹ÓÐÓжàÉÙ¸ö²ÎÊýβËæ¡£¶øβËæµÄÿ¸ö²ÎÊýÕ¼ÓõÄÕ»¿Õ¼ä´óСÓÖÊÇͨ¹ýµÚÒ»¸ö¸ñʽ×Ö·û´®È·¶¨µÄ¡£È»¶øprintfµ½µ×ÊÇÔõÑùÈ¡µÚÒ»¸ö²ÎÊýºóÃæµÄ²ÎÊýÖµµÄÄØ£¬Çë¿´ÈçÏ´ú¡£
¡¾2. printf º¯ÊýµÄʵÏÖ¡¿
//acenv.h
typedef char *va_list;
#define¡¡_AUPBND¡¡¡¡¡¡¡¡(sizeof (acpi_native_int) - 1)
#define¡¡_ADNBND¡¡¡¡¡¡¡¡(sizeof (acpi_native_int) - 1)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
#define _bnd(X, bnd)¡¡¡¡(((sizeof (X)) + (bnd)) & (~(bnd)))
#define va_arg(ap, T)¡¡ (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND))))
#define va_end(ap)¡¡¡¡¡¡(void) 0
#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND))))

//start.c
static char sprint_buf[1024];
int printf(char *fmt, ...)
{
¡¡¡¡va_list args;
¡¡¡¡int n;
¡¡¡¡va_start(args, fmt);
¡¡¡¡n = vsprintf(sprint_buf, fmt, args);
¡¡¡¡va_end(args);
¡¡¡¡write(stdout, sprint_buf, n);
¡¡¡¡return n;
}
//unistd.h
static inline long write(int fd, const char *buf, off_t count)
{
¡¡¡¡return sys_write(fd, buf, count);
}

¡¾3. ·ÖÎö¡¿
 ´ÓÉÏÃæµÄ´úÂëÀ´¿´£¬printfËƺõ²¢²»¸´ÔÓ£¬Ëüͨ¹ýÒ»¸öºêva_start°ÑËùÓеĿɱä²ÎÊý·Åµ½ÁËÓÉargsÖ¸ÏòµÄÒ»¿éÄÚ´æÖУ¬È»ºóÔÙµ÷ÓÃvsprintf. ÕæÕýµÄ²ÎÊý¸öÊýÒÔ¼°¸ñʽµÄÈ·¶¨ÊÇÔÚvsprintf¸ã¶¨µÄÁË¡£ÓÉÓÚvsprintfµÄ´úÂë±È½Ï¸´ÔÓ£¬Ò²²»ÊÇÎÒÃÇÕâÀïÒªÌÖÂÛµÄÖص㣬ËùÒÔÏÂÃæ¾Í²»ÔÙÁгöÁË¡£ÎÒÃÇÕâÀïÒªÌÖÂÛµÄÖصãÊÇva_start(ap, A)ºêµÄʵÏÖ£¬Ëü¶Ô¶¨Î»´Ó²ÎÊýAºóÃæµÄ²ÎÊýÓÐÖØ´óµÄÖƵ¼ÒâÒå¡£ÏÖÔÚ°Ñ #define va_start(ap, A)


Ïà¹ØÎĵµ£º

£¨c primer plusµÚÎå°æ£©Ñ§Ï°±Ê¼Ç

 
 
µÚÒ»Õ¸ÅÀÀ
CÊÇÒ»ÖÖ±àÒëÐ͵ÄÓïÑÔ
±àÒëÐÍ£º¾ÍÊÇ°ÑcÓïÑÔ±àÒë³É¼ÆËã»úÄÜÔËÐеĻúÆ÷´úÂë
²»Í¬µÄ¼ÆËã»úϵͳÓÐן÷×ԵıàÒëÆ÷£¬À´°Ñc±àÒë³É¶ÔÓ¦µÄ»úÆ÷´úÂë
ÌØÐÔ£º´úÂë¸ßЧ£¬¿ÉÒÆÖ²£¬¹¦ÄÜÇ¿´óºÍÁé»î
ȱµã£º´úÂë¸ñʽ×ÔÓÉ£¨ÌرðÊÇÖ¸ÕëµÄʹÓã©
 
CÓïÑÔÔËÐеÄÆ߸ö²½Ö裺
1.     ¶¨Ò ......

emacs ¿ì½Ý¼ü£¨°üÀ¨C£¯C++ģʽ£©

·ûºÅ
      C-  Òâ˼ÊÇ°´×¡ Ctrol ¼ü
M-   ÒâÖ¸ Meta ¼ü (¼üÅÌÉÏÈôÎÞMeta ¼ü£¬Ôò¿ÉÒÔALT ESC ¼üÀ´È¡¶ø´úÖ®)
DEL  ÒâÖ¸Í˸ñ¼ü (²»ÊÇ É¾³ý(Delete) key)
RET  ÒâÖ¸»Ø³µ¼ü
SPC  ÒâÖ¸¿Õ¸ñ¼ü
ESC  ÒâÖ¸Escape¼ü
TAB  ÒâÖ¸Tab¼ü
Ïñ "C-M-" (or "M-C") ......

C¶àάÊý×é

 Ò»¡¢¶àάÊý×éµØÖ·µÄ±íʾ·½·¨
¡¡¡¡ÉèÓÐÕûÐͶþάÊý×éa[3][4]ÈçÏ£º
¡¡¡¡0 1 2 3
¡¡¡¡4 5 6 7
¡¡¡¡8 9 10 11
¡¡¡¡ÉèÊý×éaµÄÊ×µØַΪ1000£¬¸÷ϱê±äÁ¿µÄÊ×µØÖ·¼°ÆäÖµÈçͼËùʾ¡£  
ÔÚÇ°ÃæÔø¾­½éÉܹý£¬ CÓïÑÔÔÊÐí°ÑÒ»¸ö¶þάÊý×é·Ö½âΪ¶à¸öһάÊý×éÀ´´¦Àí¡£Òò´ËÊý×éa¿É·Ö½âΪÈý¸öһάÊý×飬¼´a[0]£¬a[1]£¬ ......

C/C++ÒÆλÔËËã·û³ö½çºóµÄ½á¹ûÊDz»¿ÉÔ¤ÆÚµÄ

ת×Ô£ºhttp://dev.csdn.net/article/29/29329.shtm
 
¹ØÓÚÂß¼­ÒÆλ¡¢ËãÊõÒÆλ¿É²Î¼û ѸÀ×Éî´ó±ÊÊÔÌⲿ·Ö¡£µÄÒ»µÀÌâ¡£
ÒÔÇ°¿´µ½C++±ê×¼ÉÏ˵£¬ÒÆλÔËËã·û£¨<<¡¢>>£©³ö½çʱµÄÐÐΪ²¢²»È·¶¨£º
The behavior is undefined if the right operand is negative, or greater than or equal to the length in bit ......

C/C++»ù±¾ÖªÊ¶£¨ËÄ£©

 
C/C++»ù±¾ÖªÊ¶£¨×ªÔØ£©
0
ÍƼö±¾ÎĵÄд×÷Ä¿µÄ²¢²»ÔÚÓÚÌṩC/C++³ÌÐòÔ±ÇóÖ°ÃæÊÔÖ¸µ¼£¬¶øÖ¼ÔÚ´Ó¼¼ÊõÉÏ·ÖÎöÃæÊÔÌâµÄÄÚº­¡£ÎÄÖеĴó¶àÊýÃæÊÔÌâÀ´×Ô¸÷´óÂÛ̳£¬²¿·ÖÊÔÌâ½â´ðÒ²²Î¿¼ÁËÍøÓѵÄÒâ¼û¡£
¡¡¡¡Ðí¶àÃæÊÔÌâ¿´ËƼòµ¥£¬È´ÐèÒªÉîºñµÄ»ù±¾¹¦²ÅÄܸø³öÍêÃÀµÄ½â´ð¡£ÆóÒµÒªÇóÃæÊÔÕßдһ¸ö×î¼òµ¥µÄstrcpyº¯Êý¶¼¿É¿´³öÃæÊÔ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ