Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö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ʵÏÖµÄÇóÁ½¸öÊýµÄ³Ë·¨ÄæÔª

¶¨Ò壺Éèa¶ÔbµÄ³Ë·¨ÄæÔªÊÇxÔò¿ÉÒÔ¼ÇΪa*x=1 mod b£¬¼´aºÍxµÄ»ý³ýÒÔbµÄÓàÊýÊÇ1£»
 
³Ë·¨ÄæÔª³£ÓÃËã·¨ÊÇÅ·¼¸ÀïµÂËã·¨£º
 
//Ëã·¨Çód¹ØÓÚÄ£fµÄ³Ë·¨ÄæÔªd-1 £¬¼´ d* d-1 mod f = 1
 
¡¡¡¡1 ¡£(X1£¬X2£¬X3) := (1£¬0£¬f)£» (Y1£¬Y2£¬Y3) := (0£¬1£¬d)
¡¡¡¡2¡£ if (Y3=0) then return d-1 = null //ÎÞÄæÔª ......

cÖкÍjavaÖÐÊý×éµÄÇø±ð

  ¶ÔÓÚÔ­ÓïÀàÐ͵ÄÊý×飬Èçint[]   a,ÔÚCÀïÃæÖ»ÒªÕâÑù¶¨ÒåÖ®ºó¾Í¿ÉÒÔÓÃa[i]ʹÓÃÁË£¬µ«ÊÇÔÚJAVAÀïÃæÊDz»Ðе쬱ØÐëÓÃint[]   a   =   new   int[LENGTH];À´ÎªÊý×é·ÖÅä¿Õ¼ä¡£ÕâÀïµÄa¸üÓ¦¸Ã¿´³ÉCÀïÃæµÄÖ¸Õ룬ËüºÍCÀïÃæµÄint*   aÊÇÒ»ÑùµÄ£¬ÒòΪÕâ¸öa£¨CÀïÃæµÄ£©Ò²ÒªÏÈmallocÒ»¸ö¿Õ¼äÖ®ºó²Å¿ ......

ÔÚcÖд¦Àíutf

UTF-8×î´óµÄÒ»¸öÌØµã£¬¾ÍÊÇËüÊÇÒ»Öֱ䳤µÄ±àÂ뷽ʽ¡£Ëü¿ÉÒÔʹÓÃ1~4¸ö×Ö½Ú±íʾһ¸ö·ûºÅ£¬¸ù¾Ý²»Í¬µÄ·ûºÅ¶ø±ä»¯×Ö½Ú³¤¶È¡£
UTF-8µÄ±àÂë¹æÔòºÜ¼òµ¥£¬Ö»ÓжþÌõ£º
1£©¶ÔÓÚµ¥×ֽڵķûºÅ£¬×ֽڵĵÚһλÉèΪ0£¬ºóÃæ7λΪÕâ¸ö·ûºÅµÄunicodeÂë¡£Òò´Ë¶ÔÓÚÓ¢Óï×Öĸ£¬UTF-8±àÂëºÍASCIIÂëÊÇÏàͬµÄ¡£
2£©¶ÔÓÚn×ֽڵķûºÅ£¨n>1£©£¬µÚÒ ......

C/C++Ô¤´¦Àí ISO/ANSI C±ê×¼ÒëÎÄÓë×¢½â

C/C++Ô¤´¦Àí ISO/ANSI C±ê×¼ÒëÎÄÓë×¢½â
http://blog.csdn.net/huyansoft/archive/2008/05/26/2484297.aspx
<<ISO/ANSI C±ê×¼ÒëÎÄÓë×¢½â C/C++Ô¤´¦Àí²¿·Ö>>
ÄÚÈݼò½é£º±¾ÎĵµÍêÕû·­ÒëÁËC±ê×¼(99°æ)ÖÐÔ¤´¦ÀíºÍÏà¹ØÕ½ڵÄÄÚÈÝ£¬²¢ÔÚÐí¶à±ØÒªÖ®´¦¸½¼ÓÁË×¢½âºÍ³ÌÐòʾÀý£¬ÒÔ°ïÖú¶ÁÕßÀí½â±ê×¼Ô­ÎÄ£¬Í¬Ê±ÖÆ×÷ÁËÏêϸµ ......

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 ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ