C语言②

位运算符:

c语言中,位运算符主要是针对 int 类型和char类型数据而言的,不适合用于float,double,long,和void等其他复杂类型。优先级由高到低依次为:

~,>>,<<,&,^,|其中只有按位取反是单目运算符,其他都是双目运算符。

按位非运算~:将二进制的数字0变1,1变0,

按位与运算&:l两个操作对象均为1时,则该位结果为1,否则为0,即都为1,才是真,为1.

按位或运算符|:两个操作对象有一个为1时,结果为1,否则为0,即都为0才为0,

按位异或^:两个操作对象相异时,则结果为1,相同时为0,相异为真,为1,相同为假,为0

对位位运算符应该注意四点:

位逻辑运算符的操作数应该是整型数据

为了保证程序的可可移植性,操作数应使用十进制,八进制或者十六进制的表示形式,而不要使用二进制数的表示形式,这是因为二进制数的表示形式与

机器硬件支持紧密相关。

按位取反运算符仅对操作数取反码,不能直接求其补码,如果要求其某操作数的补码,应该先求出其反码,在运用增1运算对反码加1,使该操作数变为原操作数的补码。

位逻辑运算与前面介绍的逻辑运算有质的区别,位逻辑运算是按位进行运算的,而逻辑运算则是对整个数值按0和非零进行运算的,位逻辑运算要计算具体数值,而逻辑运算

只判断表达式的值是真还是假。

位移运算符:(结合性为自左向右)

a<<b,a向左移b位。

a>>b,a向右移b位。

注意:左移或右移时出现的空位应当补0

如果左移或右移的位数是负值,移位的最终结果为0值

如果参与移位运算的变量是有符号的整型变量,则应当将最左边的二进制当作符号位(负数用1补),并根据补码确定最终的结果。

赋值表达式

x=y==z+5,看起来很奇葩,但是应该是可以的。表示逻辑判断然后赋值给x.

1,赋值表达式也有类型自动转换

2,字符型变量赋值给整型时,高八位补0

3,整型赋值给字符型,只把低八位赋给字符变量,

大转小会丢失精度。

逗号运算符及其表达式:

表达式1,表达式2,先计算表达式1,然后再计算表达式2,最后结果为表达式2的计算结果。

逗号表达式时必须注意几点:

1,逗号表达式有可能降低程序的可读性,不利于养成良好的编程习惯,建议少用或者不用

2,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个表达式的值

3,并不是所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数列表中逗号只是用做各变量之间的分隔符

支持条件表达式,a?b:c  注意类型的转换

sizeof运算符用于计算计算机中对象占用的字节。sizeof(e)e可以是任何类型或者表达式,优先级高。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星月IWJ

曾梦想杖键走天涯,如今加班又挨

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值