C语言重难点复习

一、字节
1byte : char
2byte: short
4byte; int long
8byte : double long double

二、位
1字节=8bits

三、标识符
C语言规定,标识符必须由字母、下划线、数字三类符号
组成,并且第一个字符必须为字母或下划线。
(注:自定义的标识符不能与C语言规定的标识符相同,eg:int (错误) nit (没毛病))

四、数据类型转换
C语言标准建议:
(1) 长->短
低字节直接拷贝,高字节直接discards(抛弃,丢弃),也没办法要啦。

(2) 短->长
低字节直接拷贝,那么高字节呢?
如果短的是无符号的,那么高字节全部补0;
如果短的是有符号的,那么高字节全部符号位。

优先级: 在含有多个运算符的表达式中,先算哪个运算符的问题。

        单目运算符 > 算术运算符 > 关系运算符 > 逻辑运算符 > 条件运算符
        > 赋值运算符 > 逗号运算符

        (当选官,罗条幅,逗)

把变量a的第5bit置1,其他bit位不变,代码该如何写?
a = a | (1 << 5);

一个bit位与0进行“按位异或 ^”,保留原值
x ^ 0 == x
一个bit位与1进行“按位异或 ^”,结果取反
x ^ 1 == ~x

(1) 有一个整型变量a,要使a的第5bit保留,其他位取反,
代码该如何写?

                a =     a ^  (~(1  << 5)) ;

(2)如把变量a的第5bit位清掉,其他bit位不变,代码该怎么写?
a = a & ~(1 << 5)

(3) 我们在程序中,有时候,经常需要交换两个变量的值
int a = 5, b = 6;

            使用中间变量t 
                int t;
                t = a;
                a = b;
                b = t;

假设要求不使用中间变量呢? (两个数相互异或)
a = 3 b = 4
011
100
a = a ^ b => 111
b = b ^ a => 011 3
100
111
a = a ^ b => 100 4
111
011

**(1) 有一个整型变量a,要使a的第4bit到第8bit变为0,其他位不变
    该如何操作?**
    ( &4~8位为0->5个1取反->0~4:按位左移4位——>a=a&~(0x1f<<4))


        a:          b31 b30.... b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
                  &  1  1  ..... 1 0  0   0  0  0  1 1  1  1 

                        0x1f  =>   11111
                        0x1f << 4   0000000..00 11111 0000
                        ~(0x1f << 4) 111111..11 00000 1111

        a =     a & ~(0x1f << 4);


**(2) 有一个整型变量a,我想取这个变量的第4bit到第8bit的值,该
    如何操作?**
    (去后&1:右移四位&5个1——>a = (a>>4)&0x1f)


        a:          b31 b30.... b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
            a >> 4
                  xxxxx b31 b30.... b9 b8 b7 b6 b5 b4
                  00000000000000000000  1 1  1    1  1


            (a >> 4) & 0x1f  ;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值