c语言基础(081223)

来源:互联网 发布:微博推广软件 编辑:程序博客网 时间:2024/05/05 00:55

1、%d是输出有符号的十进制整数,%u是输出无符号的十进制整数,注意区分有符号以及无符号的整数。

2、C语言中位域的概念

3、移位操作中的左移<<、右移>>的区别:

左移一位相当于乘以2,但要注意整数数值超出数据类型而溢出;

右移中有逻辑右移和算数右移的概念,注意区分:

 

当无符号数时,右移时左边高位移入0;

当有符号数时,右移时左边高位移入0,称为逻辑右移

                           右移时左边高位移入1,称为算数右移。

具体是算数右移还是逻辑右移,取决于计算机系统。一般来说,当位有符号数时,一般采用算数右移操作。

 

下面见一道题:

int main( int argc ,char * argv[])
{

typedef
struct ss
{
   
char c:4
}ss;
ss s0,s1,s2;

s0.c
= 7;
s1.c
= (s0.c << 1);
s2.c
= (s1.c >> 1);

printf(
"%d,%d,%d/n",s0.c,s1.c,s2.c);
return 0;
}