¡¾×ª¡¿CµÄÁíÒ»ÖØÒªÊý¾Ý½á¹¹bit fields
½ñÌì¿´K&RµÄÊéµÄʱºò˳±ãÎÂϰÁËCµÄÁíÒ»ÖØÒªÊý¾Ý½á¹¹bit-fields£¬ÎÒÏëbit-fieldsÔÚ±àдµ×²ãÇý¶¯
Çý¶¯³ÌÐòµÄʱºòÓ¦¸Ã±È½ÏºÃÓã¬Ëü¿ÉÒÔÈÆ¿ª"&"ºÍ"|"½øÐÐλ²Ù×÷£¬¶øÇÒ¸ü¼Ó½ÚÔ¼ÄÚ´æ¿Õ¼ä¡£·Ï»°²»¶à˵
ÁË£¬»¹ÊÇÏÈÀ´¿´¿´ËüµÄÕæÃæÄ¿°É£º
bit-fieldÀ´Ô´:
bit-fieldÊÇΪÁ˽ÚÔ¼´æ´¢¿Õ¼ä¶ø´´ÔìµÄÒ»ÖÖÊý¾Ý½á¹¹(to pack several objects into a single
machine word)
bit-fieldÓÃ;:
Externally-imposed data formats,such interfaces to hardware
devices,also often
require the ability to get a pieces of a word
¶¨Òå·½·¨:
struct (tag) {
bit-field list ~~~
} bit-field variable list;
Óɶ¨Òå·½·¨¿É¼û£¬bit-fieldÒ²ÊÇÒÔstructureµÄÐÎʽ×éÖ¯ÆðÀ´µÄÊý¾Ý½á¹¹£¬Ö»²»¹ýÊÇÒÔ¶þ½øÖƽøÐзַ¢
µÄ¶øÒÑ¡£ÆäÖÐbit-field list±íʾ·½·¨£º type fieldnamme:width;
width:fieldµÄ¿í¶È£¬ÒÔbit
±íʾ£¬»¹ÊǾٸöÀý×ÓÀ´¿´°É£º
struct bf{
unsigned int is_keyword:1;
unsigned int is_extern:1;
unsigned int is static:1;
}flags;
¶¨ÒåÁËÒ»¸öbit-field±äÁ¿flags£¬Ëü°üÀ¨3¸ö1-bitµÄfield£¬·ÃÎÊbit-fieldÆäʵºÍ·ÃÎÊÒ»°ãÊý¾Ý½á
¹¹µÄ³ÉÔ±Ò»Ñù£¬ÀýÈ磺
flags.is_static=0;
ÔÚ¶¨Òåbit-fieldµÄʱºò£¬ÓÐÒÔϼ¸µãҪעÒâ(K&R°æ±¾µÄ¹Ûµã)
1¡¢Almost everything about fields is implemention-dependent !
Whether a field may
overlap a word boundary is implemention-defined.
2¡¢Fields can only be declared as intS,for protability,specify
signed or unsigned
explicitly.
3¡¢unnamed field can be used for padding£¨Ã»ÓÐÃû×ÖµÄfield¿ÉÒÔÓÃÀ´×÷ΪÌî³ä»òÕßµ÷ÕûÓÃ)
ÀýÈ磺
struct bf{
unsigned int a:2;
unsigned int :4; /*¸Ã4λ²»ÄÜÓÃ*/
unsigned int b:2;
};
4¡¢Special width 0 may be used to force alignment at the next word
boundary.
(Èç¹ûwidth=0µÄ»°£¬ÄÇôÏÂÒ»¸öfield¾Í±»Ç¿ÖÆ´æ·ÅÔÚÏÂÒ»¸öÄÚ´æµ¥ÔªÀïÃæÁË),ÀýÈç:
struct bf{
unsigned int a:2;
unsigned int :0; /*¿ÕµÄfield*/
unsigned int b:2
Ïà¹ØÎĵµ£º
C/SÓÖ³ÆClient/Server»ò¿Í»§/·þÎñÆ÷ģʽ¡£·þÎñÆ÷ͨ³£²ÉÓøßÐÔÄܵÄPC¡¢¹¤×÷Õ¾»òСÐÍ»ú£¬²¢²ÉÓôóÐÍÊý¾Ý¿âϵͳ£¬ÈçOracle¡¢Sybase¡¢Informix»ò SQL Server¡£¿Í»§¶ËÐèÒª°²×°×¨ÓõĿͻ§¶ËÈí¼þ¡£
¡¡¡¡B/£ÓÊÇBrower/ServerµÄËõд£¬¿Í»§»úÉÏÖ»Òª°²×°Ò»¸öä¯ÀÀÆ÷£¨Browser£©£¬ÈçNetscape Navigator»òInternet Explorer£¬·þÎñÆ÷°²×°O ......
C++ÓïÑԵĴ´½¨³õÖÔÊÇ“a better C”,µ«ÊÇÕâ²¢²»Òâζ×ÅC++ÖÐÀàËÆCÓïÑÔµÄÈ«¾Ö±äÁ¿ºÍº¯ÊýËù²ÉÓõıàÒëºÍÁ¬½Ó·½Ê½ÓëCÓïÑÔÍêÈ«Ïàͬ.×÷ΪһÖÖÓûÓëC¼æÈݵÄÓïÑÔ,C++±£ÁôÁËÒ»²¿·Ö¹ý³ÌʽÓïÑÔµÄÌØµã(±»ÊÀÈ˳ÆÎª“²»³¹µ×µØÃæÏò¶ÔÏó”),Òò¶øËü¿ÉÒÔ¶¨Òå²»ÊôÓÚÈκÎÀàµÄÈ«¾Ö±äÁ¿ºÍº¯Êý.µ«ÊÇ,C++±Ï¾¹ÊÇÒ»ÖÖÃæÏò¶ÔÏóµÄ³ÌÐ ......
¾¡¹Ü Lua µÄ¹Ø¼ü´ÊµÄÉè¼Æ£¬ÔËÐзûµÄÉè¼Æ£¬Óï·¨µÄÉè¼ÆµÈ·½ÃæÓë C ºÜÏàËÆ£¬µ«ÎÒÃÇ»¹Òª×¢ÒâÆäÃ÷ÏÔ²»Í¬µÄµØ·½¡£
Ìõ¼þÅжÏʱµÄÕæ¼ÙÌõ¼þ
Lua ÖÐËùÓеÄÖµ¶¼¿ÉÒÔ×÷ΪÌõ¼þ¡£ÔÚ¿ØÖƽṹµÄÌõ¼þÖгýÁË false ºÍ nil Ϊ¼Ù£¬ÆäËûÖµ¶¼ÎªÕæ¡£ËùÒÔ Lua ÈÏΪ 0 ºÍ ¿Õ´® ¶¼ÊÇÕæ¡£
¶ø C ÖУ¬ÈÏΪֻҪÊÇÔÚÄÚ´æÖбíÏÖΪ 0 ÖµµÄ·ûºÅ¶¼Îª¼Ù¡£
×Ö ......
c¿âº¯ÊýÏê½â——assert
º¯ÊýÃû: assert
¹¦ ÄÜ: ²âÊÔÒ»¸öÌõ¼þ²¢¿ÉÄÜʹ³ÌÐòÖÕÖ¹
ÓÃ ·¨: void assert(int test);
³ÌÐòÀý:
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
struct ITEM {
int key;
int value;
};
/* add item to ......