ÄÚÈݼò½éÔÚÓà printf ½øÐÐÃüÁîÐдòÓ¡Êý¾Ýʱ£¬ÎÒÃDz»Ê±»á·¢³ö¡¸ÎÔ²ÛÕâÊÇʲô¹í¡¡¡¹µÄ¾ªÌ¾£¬ÔÚÆÁÄ»ÉÏ¿´²»µ½ÏëÒªµÄ½á¹û¡£µ«ÆäʵÊý¾ÝÎÞ×¼ÆËã»úҲûÓÐ´í£¬Ö»ÊÇÎÒÃDz»Á˽âÊý¾ÝµÄÀ´ÁúÈ¥Âö£¬¶Ô´òÓ¡½á¹û²úÉúÁËÎó»á¡£¸ü½øÒ»²½½²£¬ÕâÊÇÓÉÓÚÊý¾Ý´æ´¢Óë±íʾµÄ²îÒìÔì³É¡£
´òÓ¡ÎÞ·ûºÅÊýÒý·¢µÄ˼¿¼
ÉÏ´ÎÖܹ¤²Ù×ÅÒ»¿Ú¡¸Ê§ÕæÓ¢ÓÎÊÁËÎÒÒ»¸ö¹ØÓÚ unsigned int ÐͱäÁ¿µÄ´òÓ¡ÎÊÌ⣬´ó¸ÅÒâ˼ÊÇÕâÑù£º
ÔËÐнá¹û£º
ËûÏ벻ͨΪʲôһ¸öÎÞ·ûºÅÊý»á´òÓ¡³ö¸ººÅÀ´¡£ÎÒÕ§Ò»Ìý£¬ÐÄÖкǺÇһЦ£¬Õâ²»ÊÇÔÚ¶ºÎÒô£¬ÎÞ·ûºÅÊýÔõô¿ÉÄÜ»áÓиººÅ£¬¿ªÍæЦÄØÕâ¡¡
µ«ÃüÁîÐÐÉÏȷʵ°×µ×ºÚ×Ö´òÓ¡×Å a = -1 £¬Êǵģ¬ÎÒ±»Õâ´®×Ö·ûºÝºÝµØ´òÁ³ÁË¡£²»£¡¿Æ£¡Ñ§£¡°¡£¡ËµºÃµÄÎÞ·ûºÅÊýÄØ£¿
ÎÒÒ»Ö±ÒÔΪ£¬ÎÞ·ûºÅÊýÊDz»»á´æ´¢¸ººÅµÄ£¬¿´À´ÎÒ´íÁË¡£Ö±µ½ºóÀ´Ã÷°×ÁËÊý¾ÝµÄ¡¸´æ´¢¡¹Ó롸±íʾ¡¹²»ÊÇÒ»ÂëÊ¡£
Êý¾ÝµÄ´æ´¢Óë±íʾÊý¾ÝµÄ´æ´¢
¡¸ÈκμÆËã»úÎÊÌⶼ¿ÉÒÔÓ÷ֲã˼Ïë½â¾ö¡¹£¬¸³ÖµÓï¾ä a = -1; ºÍ´òÓ¡Óï¾ä printf("a = %d\n", a); ¿ÉÒÔ˵ÊÇλÓÚ²»Í¬²ã´ÎµÄ²Ù×÷ ¡ª¡ª ¸³ÖµÓï¾äÖ»¸ºÔð°ÑÊý¾Ý°´Ò»¶¨µÄ¹æÔò·ÅÈëÄڴ棬²»¹ØÐÄÊý¾ÝµÄº¬Ò壬ÊôÓڵͼ¶²Ù×÷¡£¶ø¸ß¼¶º¯Êý printf °´ÕÕÖ¸¶¨¸ñʽ°ÑÊý¾ÝÊä³ö¡£
Ò²¾ÍÊÇ˵¸³ÖµÓï¾ä a = -1; °Ñ -1 ×÷Ϊһ¸öÕûÐͳ£Á¿£¬°´ÕÕ²¹ÂëµÄ·½Ê½´æÈëÁË a ¶ÔÓ¦µÄ¿Õ¼äÖС£ºÜÏÔÈ»£¬-1 ÔÚÄÚ´æÖдæµÄ¾ÍÊÇ 1111 1111 1111 1111 1111 1111 1111 1111¡£
¸³ÖµÓï¾ä²Å²»¹ÜÄãÕâÊÇÕýÊý»¹ÊǸºÊý¡¢ÊÇÆæÊý»¹ÊÇżÊý¡¢ÊÇÖÊÊý»¹ÊǺÏÊý¡¡Ö»ÒªÕâÊÇÒ»¸öÕûÐͳ£Á¿£¬¸³Öµ²Ù×÷¾Í´æ´¢Æä¶ÔÓ¦µÄ²¹ÂëÐÎʽ£¬Ëü¾ÍÊÇÕâôÌìÕæ¡¢µ¥´¿¡£´ËʱÄÚ´æÖÐÕâ 32 Ìõ 1 ¸ù±¾¾ÍûÓÐÕý¸º»òÀàÐÍÖ®·Ö£¬Ëü¾ÍÖ»ÊÇ ¡¸32 Ìõ 1¡¹£¬½ö´Ë¶øÒÑ¡£
Êý¾ÝµÄ±íʾ
Èç¹û»úÆ÷£¨¼ÆËã»ú£©Ö»ÊÇ¡¸×Ô¼ºÍæ×Ô¼ºµÄ¡¹£¬ÄǾ͸ù±¾²»»á´æÔÚ¡¸Êý¾ÝµÄ±íʾ¡¹Õâһ˵·¨£¬ÕýÊÇÓÉÓÚÒª½øÐÐÈË»ú½»»¥£¬Í¬ÑùµÄ 0 ºÍ 1 ²Å»á¡¸±ä³É¡¹ÎÄ×Ö¡¢Í¼Æ¬¡¢ÊÓƵ¡¢ÉùÒô¡¢µÆµÄÁÁÃð¡¢µçƽµÄ±ä»¯µÈÈËÀà¿É¸ÐÖªµ½µÄÐźš£¶ÔÓÚÃüÁîÐдòÓ¡¶øÑÔ£¬printf Óï¾ä¾Íµ£µ±ÁË¡¸·Òë¹Ù¡¹ÖØÈΡ£
µ±Óà %d £¨Ê®½øÖÆÓзûºÅÕûÊý£©È¥´òÓ¡Ò»¸öÊý¾Ý£¬Õâʱºò¾ÍÒª¹ØÐÄÊý¾ÝµÄÕý¸ºÁË£¬¾ßÌå±íÏÖΪ³ÌÐò½«ÄÚ´æÖÐ×î¸ßλµÄ¶þ½øÖƵ±×ö·ûºÅ룬¸ù¾Ý·ûºÅÕý¸º½«¶þ½øÖƲ¹Âëת»»ÎªÊ®½øÖÆÊýÔÙ´òÓ¡Êä³ö£¨Õý¸ºÊý²¹Âëת»»¹æÔò²»Í¬£©¡£Èç¹û°Ñ 1111 1111 1111 1111 1111 1111 1111 1111 µ±×öÓзûºÅÊý£¬¾ÍÊÇ-1£¬Èç¹ûµ±×öÎÞ·ûºÅÊý£¨Óà %u ´òÓ¡£©,Ëû¾ÍÊÇ 4294967295 £¨Ö±½Ó°Ñ¡¸32 Ìõ 1¡¹×ª»»ÎªÊ®½øÖÆÊý£©¡£
ͬÑùµÄÊý¾Ý£¬Óò»Í¬µÄ·½Ê½´òÓ¡µÃµ½µÄ½á¹û²»Í¬£¬Êý¾ÝµÄ´æ´¢ÊÇÒ»»ØÊ£¬¶øÊý¾ÝµÄ±íʾÊÇÁíÍâÒ»»ØÊ¡£´òÓ¡½á¹û´Ó -1 ±ä³ÉÁË 4294967295£¬²¢²»´ú±íÊý¾Ý·¢ÉúÁ˸ı䣨ÊÂʵÉÏÈç¹û²»Óà = ȥдÕâ¿é¿Õ¼äµÄ»°£¬Êý¾ÝÊDz»»á±äµÄ£©£¬¶ÔÊý¾ÝµÄ½âÎö·½Ê½¾ö¶¨ÁËÊý¾ÝµÄÏÔʾ½á¹û£¬ÑÛ¼û²»Ò»¶¨ÎªÊµ¡£
Êý¾ÝµÄ´æ´¢Óë±íʾ¾ÍÏñ±àÂëÓë½âÂ룬ֻÓÐÓÃͬһÖÖ¹æÔò¶ÔÊý¾Ý½øÐжÁд¡¢ÏÔʾ²ÅÄÜÏû³ýÆçÒ壬±£Ö¤³ÌÐòµÄÕýÈ·ÐÔ¡£
²¹³ä£ºÊýÖµ´òÓ¡ char ¡ª¡ª ·ûºÅÀ©Õ¹ºÍÁãÀ©Õ¹
ÈÏʶµ½Êý¾ÝµÄ´æ´¢Óë±íʾµÄÇø±ðºó£¬Ò»¿ªÊ¼µÄÎÊÌâÆäʵÒѾÓÐÁ˴𰸣ºÓÃÎÞ·ûºÅÕûÐÍ unsigned intÈ¥´æÒ»¸ö¸ºÊý²¢²»»á°ÑÆä·ûºÅ¶ªµô£¨Ç°Ãæ½²ÁËÕâ¸ö²Ù×÷ÖÐÉõÖÁ¶¼Ã»ÓС¸Õý¸ºµÄ¸ÅÄ£©£¬¶øÊÇÏÈÓò¹ÂëµÄÐÎʽÍêÕûµØ±£´æÊý¾Ý£¬ÔÚ´òӡʱ²Å¶ÔÊý¾Ý½øÐС¸Èí¼þ²ãÃ桹ÉϵĶ¨Òå ¡ª¡ª ×î¸ßλÓÃ×÷·ûºÅλ»¹ÊÇÊýֵ룬²¢½øÐÐת»»¡¢±íʾ¡£
ÄÇÔÙ¿´Ò»¶Î´úÂ룺
ÔËÐнá¹û£º
Õâ¸öÀý×Ӿ͸üºÃµÄ˵Ã÷ÁËÕâÖÖ¡¸Ëù¼û·ÇËùµÃ¡¹µÄ¹Øϵ£¬ÎÒÃÇÖªµÀ char ÀàÐÍÊÇÕ¼Ò»¸ö×Ö½Ú´óСµÄ£¬8 λ¶þ½øÖÆ×î´óÒ²Ö»ÄÜÈ¥µ½ 255£¬ËùÒÔÕâ¸ö 4294967295 ¾ø±Ú²»ÊDZäÁ¿ a µÄÕæʵֵ¡£¶øÊÇ°Ñ a °´ÕÕÎÞ·ûºÅÕûÐÍ %u ½øÐдòÓ¡µÄÏÔʾ½á¹û£¬µ« 8 λµÄÊý¾ÝÊÇÈçºÎ±ä³É 32 λµÄÄØ£¿Õâ¾ÍÉæ¼°µ½¡¸ÀàÐÍÀ©Õ¹¡¹µÄÎÊÌâ¡£
˼¿¼Ò»¸öÎÊÌ⣬8 λÊý¾Ý·Åµ½ 32 λ¿Õ¼äÖУ¬¸ß 24 λÌî³äʲô£¿ºÜ¼òµ¥£¬²»ÊÇ 0 ¾ÍÊÇ 1 ÂÓÚÊǾÍÓÐÁË¡¸·ûºÅÀ©Õ¹ £¨²¹ 1£©¡¹ºÍ¡¸ÁãÀ©Õ¹£¨²¹ 0£© ¡¹¡£
¹ØÓÚÕâÁ½ÖÖÀ©Õ¹·½Ê½ÍøÉÏÓи÷ÖÖ½âÊÍ˵Ã÷£¬Æäʵ¾ÍÒ»¾ä»°µÄÊ ¡ª¡ª ¶ÔÓÚ unsigned ÀàÐÍ£¬À©Õ¹Ê±Ìî³ä 0 £¬¶ø signed ÀàÐÍÒª¿´·ûºÅ룬·ûºÅλΪ 1£¬À©Õ¹Ê±¾ÍÌî³ä 1£¬·ñÔòÌî³ä 0¡£
»Øµ½ÎÒÃǸոÕдµÄ char a = -1£¬a ΪÓзûºÅÊý£¬ÇÒ×î¸ßλΪ 1£¨´æ´¢Îª 1111 1111 £©£¬ÓÚÊÇÀ©Õ¹³É 32 λ int ÐÍʱ¾Í±ä³ÉÁË 1111 1111 1111 1111 1111 1111 1111 1111£¨´ÖÌåΪÌî³ä²¿·Ö£©£¬Õâ¸öÖµÒ²ÊÇ int ÐÍ -1 µÄ´æ´¢ÄÚÈÝ£¨¼´ÓÃ32 λÀ´±íʾ -1 µÄ²¹Â룩¡£²»·Á»»Ò»ÖÖ˼·Àí½â£¬´Ó¡¸²¹Êý¡¹µÄ½Ç¶ÈÀ´¿´£¬Õâ¸öÖµµÄÎÞ·ûºÅ±íʾÕýÊÇ 32 λ¿Õ¼äµÄ¡¸Ä£¡¹¼õÈ¥ 1 µÄÖµ£¨Á½¸ö»¥²¹µÄÊý¾ø¶ÔÖµÏà¼ÓµÈÓÚÄ££© ¡ª¡ª 2 ^ 32 - 1 = 4294967296 - 1 = 4294967295£¬ÕýÊÇÎÒÃÇ´òÓ¡µÄ½á¹û£¡
¹Ù·½½âÊÍ
¹ØÓÚ char µÄÀàÐÍת»»ÎÊÌ⣬ÔÚ K&R µÄ¡¶C³ÌÐòÉè¼ÆÓïÑÔ¡·Õⲿ¾µäÀïÓÐÇåÎúµÄ˵Ã÷£º
½«×Ö·ûÀàÐÍת»»ÎªÕûÐÍʱ£¬ÎÒÃÇÐèҪעÒâÒ»µã¡£C ÓïÑÔûÓÐÖ¸¶¨ char ÀàÐ͵ıäÁ¿ÊÇÎÞ·ûºÅ±äÁ¿£¨unsigned£©»¹ÊÇ´ø·ûºÅ±äÁ¿£¨signed£©¡£µ±°ÑÒ»¸ö char ÀàÐ͵Äֵת»»Îª int ÀàÐ͵Äֵʱ£¬Æä½á¹ûÓÐûÓпÉÄÜΪ¸ºÕûÊý£¿¶ÔÓÚ²»Í¬µÄ»úÆ÷£¬Æä½á¹ûÒ²²»Í¬£¬Õâ·´Ó³Á˲»Í¬»úÆ÷½á¹¹Ö®¼äµÄÇø±ð¡£ÔÚijЩ»úÆ÷ÖУ¬Èç¹û char ÀàÐÍÖµµÄ×î×óһλΪ 1£¬Ôòת»»Îª¸ºÕûÊý£¨½øÐС°·ûºÅÀ©Õ¹¡±£©¡£¶øÔÚÁíһЩ»úÆ÷ÖУ¬°Ñ char ÀàÐÍֵת»»Îª int ÀàÐÍʱ£¬ÔÚ char ÀàÐÍÖµµÄ×ó±ßÌí¼Ó 0£¬ÕâÑùµ¼ÖµÄת»»½á¹ûÖµ×ÜÊÇÕýÖµ¡£¿´À´ÎÒÓõĵçÄÔÊôÓÚ×÷ÕßËù˵µÄ¡¸Ä³Ð©»úÆ÷¡¹ÄØ£¬ËƺõÁ½ÖÖ»úÆ÷µÄÇø±ðÔÚÓÚÊÇ°Ñ char µ±×öunsigned char »¹Êǵ±×ö signed char¡£ÔÚ¡¸Óà char ÀàÐÍ´æ´¢·Ç×Ö·ûÊý¾Ý¡¹£¨µ¥Æ¬»úÖзdz£Æձ飩Õâ¸öÎÊÌâÉÏ£¬ÊéÖÐÒ²×ö³öÁ˽¨Ò飺
C ÓïÑԵĶ¨Òå±£Ö¤ÁË»úÆ÷µÄ±ê×¼´òÓ¡×Ö·û¼¯ÖеÄ×Ö·û²»»áÊǸºÖµ£¬Òò´Ë£¬ÔÚ±í´ïʽÖÐÕâЩ×Ö·û×ÜÊÇÕýÖµ¡£µ«ÊÇ£¬´æ´¢ÔÚ×Ö·û±äÁ¿ÖеÄλģʽÔÚijЩ»úÆ÷ÖпÉÄÜÊǸºµÄ£¬¶øÔÚÁíһЩ»úÆ÷ÉÏ¿ÉÄÜÊÇÕýµÄ¡£ÎªÁ˱£Ö¤³ÌÐòµÄ¿ÉÒÆÖ²ÐÔ£¬Èç¹ûÒªÔÚ char ÀàÐ͵ıäÁ¿Öд洢·Ç×Ö·ûÐÍÊý¾Ý£¬×îºÃÖ¸¶¨ signed »ò unsigned ÏÞ¶¨·û¡£Õâ¾Í²»ÄѽâÊÍΪʲôµ¥Æ¬»ú³ÌÐòÖж¼ÊÇÇåһɫµÄ unsigned char ±äÁ¿ÁË¡£
ÀàËƵÄÎÊÌ⻹ÓÐÐí¶à£¬±ÈÈ硸Ϊʲô°´Î»È¡·´ 0 ´òÓ¡½á¹ûÊÇ -1¡¹£¬¸øÈ˵ĸоõÏñÊÇÔÚ±íÑÝ¡¸»¨Ê½´æ 1 ¡¹¡£Ö»ÒªÃ÷°×ÁËÄÚ´æÖеĶþ½øÖÆ0¡¢1ÒÔ¼°ÃüÁîÐдòÓ¡µÄ×Ö·ûÊÇÔõôÀ´¡¢µ½ÄÄÈ¥µÄ£¬ÄǼòÖ±ÊÇÏëÔõôÍæ¾ÍÔõôÍæ~~~
±äÁ¿ÀàÐ͵Ä×÷ÓÃ
´ÓÉÏÃæµÄʵÀý¿ÉÒÔÖªµÀÎÞÂÛÊÇÓà signed int »¹ÊÇ unsigned int À´´æ´¢Êý¾Ý£¬ÔÚÄÚ´æÖеĶþ½øÖÆÊý¾Ý¶¼ÊÇÒ»ÑùµÄ£¬ÄÇô±äÁ¿ÀàÐ;ÍûÓÃÁËô£¿²¢²»ÊÇ£¬Í¨¹ýÉÏÃæµÄ´úÂë¿ÉÒÔ×ܽá³ö±äÁ¿ÀàÐ͵ļ¸µã×÷Óãº
¶¨Òå±äÁ¿µÄ´æ´¢¿Õ¼ä´óС£¨Èç char ÀàÐ굀 -1 ÊÇ 8 ¸ö 1£¬ ¶ø int ÀàÐ굀 -1 ÓÐ 32 ¸ö 1£©
¶¨ÒåÖ¸Õë±äÁ¿¿É·ÃÎÊ·¶Î§µÄ´óС£¨Èç int * ÀàÐ͵ıäÁ¿ÄÜ·ÃÎÊÒ»¿é 4 ¸ö×ֽڵĿռ䣩
¶¨Òå±äÁ¿µÄÈ¡Öµ·¶Î§£¬±ãÓÚ±àÒëÆ÷×öÊýÖµÒç³öÅÐ¶Ï ¡ª¡ª Ö»Òª±äÁ¿ÔÚÈ¡Öµ·¶Î§ÄÚ²¢ÇÒʹÓÃÏàͬµÄÀàÐͽøÐд洢Óë±íʾ£¬³ÌÐò¾ÍÄÜÕý³£¹¤×÷£¨Èç char µÄ·¶Î§ÊÇ -128 µ½ 127£¬ Óà unsigned int¶¨Òå¾ÍÓà %u ´òÓ¡£¬ÉÏÃæÊǹÊÒâÖÆÔì´íÎóÀ´Ì½¾¿±¾ÖÊ£©
¶¨ÒåÁ˱äÁ¿×ª»»Îª¶þ½øÖÆ£¨¶Áд£©µÄ¹æÔò£¨Èç int Ð굀 1 ºÍ float Ð굀 1.0 ÔÚÄÚ´æÖеĶþ½øÖƱíʾÊDz»Í¬µÄ£©
¶¨ÒåÁ˱äÁ¿ËùÄÜÖ´ÐеIJÙ×÷£¨Èç % ÔËËãÖ»ÄÜÓÃÓÚÕûÐÍÊý¾Ý£©
·Ï»°ÁËÄÇô¶àÆäʵֻÊÇÏë˵Ã÷Ò»¼þÊ£ºÊý¾ÝÔÚÄÚ´æÖдæ×Åʲô¾ÍÊÇʲô£¬ÓÃʲôÐÎʽ±íʾ¾Í¿´µ½Ê²Ã´£¬Á½Õ߶ÀÁ¢¡¢»¥²»¸ÉÈÅ¡£