C_and_CPP 版 (精华区)

发信人: Sun (大灯泡), 信区: C_and_CPP
标  题: C语言中定义BYTE的最好方法
发信站: 哈工大紫丁香 (Sun May 22 21:41:37 2005), 转信

很多时候我们需要定义一个只占一个byte的变量,通常就定义为unsigned char,甚至char了。这样并不具有可移植性。

今天一个学生问我这个问题,我查找了C FAQ和C99,并在comp.lang.c询问后,得到这样的结论:

char的大小C99说:
An object declared as type char is large enough to store any member of the basic execution character set.
也就是说C99并没有要求它必须是1个字节,虽然现在绝大多数编译器都把它处理为1个字节。char实际的大小要从CHAR_BIT获得。

那么如果确切地定义一个字节,应该用uint8_t这个类型。

--
int main(void){char p[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.\
 0123456789";                 char *q="tDJA3SfoP";                int i=sizeof
   p,l;char      *strchr            ();int            putchar       ();while
      (*q){                     putchar(p[i=(i^                     (l=
          strchr(p,*q++)-p))&0x3F             ]);i=l>i?l:i;}return 0;}


※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.239.80]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.117毫秒