位运算符

位运算符(&,|,^,〜,<<,>>)


位运算符修改变量考虑的位模式,代表了它们存储的值。  

操作者ASM当量描述
按位与
|按位或
^XOR按位异或
一元补(位反转)
<<SHL左移
>>SHR右移

显式的类型转换操作符

类型转换运算符允许你转换到另一个给定类型的一个基准。   有几种方法可以做到这一点在C + +。   最简单的一个,这已经从C语言继承,是由括在括号(())之间的新型之前要转换的表达式:  

 1 
 2 
 3 
 
 int i; float f = 3.14; i = ( int ) f; 


前面的代码浮点数3.14转换为整数的值(3),其余的都将丢失。   这里,类型转换操作符(INT)。   另一种方法做同样的事情在C + +中使用函数符号:前要转换的表达式的类型和封闭括号之间的表达:  

 
 i = int ( f ); 


铸造型这两种方法是有效的C + +。  

大小()

此操作符接受一个参数,该参数可以是一个类型或变量本身,并返回该类型或对象的大小(以字节为单位):  

 
 a = sizeof ( char ); 


这将分配一个值1,因为char是一个字节长的类型。  
sizeof返回的值是一个常数,所以它始终是在程序执行前决定。  

其他运营商

后来在这些教程中,我们将看到更多的运营商,类似的指的指针或面向对象编程的细节。   每一个被视为在其各自的部分。  

运算符优先级

写复杂的表达式时,我们可能会与多个操作数有哪些操作数被评为第一和后来的一些疑虑。   例如,在这个表达式中:  

 
 a = 5 + 7 % 2 


我们可能会怀疑,如果它的真正含义:  

 1 
 2 
 
 a = 5 + (7 % 2) // with a result of 6, or a = (5 + 7) % 2 // with a result of 0 


正确的答案是两个表达式,结果6。   有一个既定秩序与每个运算符的优先级,不仅算术的(那些喜好来自数学),但可以出现在所有的运营商的C + +。   从最大到最低优先级,优先顺序如下:  

水平操作者描述分组
1::范围左到右
2()[]。 - > + + -的dynamic_cast的static_cast reinterpret_cast的const_cast会typeid的后缀左到右
3+ + - 〜! SIZEOF新的删除一元(前缀)从右到左
*&间接参考(指针)
+ -一元的标志运营商
4(类型)类型转换从右到左
5* - > *指针成员左到右
6* /%乘法左到右
7+ -添加剂左到右
8<< >>转移左到右
9<> <=> =关系的左到右
10==!平等左到右
11按位与左到右
12^按位异或左到右
13|按位OR左到右
14&&逻辑与左到右
15| |逻辑“或”左到右
16?:有条件的从右到左
17= * = / =%= + = - = >> = << =&= ^ = | =分配从右到左
18逗号左到右

分组定义运营商进行评估的情况下,有几家运营商相同的水平在一个表达式的优先顺序。  

所有这些优先级的运营商,可以操纵或变得更清晰,消除可能的歧义使用括号标志),在这个例子中:  

 
 a = 5 + 7 % 2; 


可能被写入为:  

 
 a = 5 + (7 % 2); 

 
 
 a = (5 + 7) % 2; 


这取决于我们要执行的操作。  

所以如果你想要写复杂的表达式,你是不是完全确定的优先级,总是包括括号。   它还会使你的代码更易于阅读。  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值