第四章
4.1 操作符
+ a + b
- a - b
* a * b
/ a / b
% a % b
! !a
<
<=
>
>=
==
!=
&&
||
sizeof( pa ) 用于计算对象或者类所占用的内存大小,返回类型为size_t.size_t在cstddef中包含.
比如 sizeof(int) 等于4.
new 用于分配heap空间,delete删除空间.
4.2 位操作符
<< 按位左移 向左或右位移移到外面的位丢弃.右边位用0填充
>> 按位右移 如果是无符号数,左边填充0;否则拷贝符号位填充左边位
~ 按位非 将0设置为1,将1设置为0
& 按位与 两个操作数的位都是1时结果为1,否则为0
^ 按位异或 两个操作数的位只有1个为1时结果为1,否则为0
| 按位或 两个操作数的位只要有1个为1时结果为1,否则为0
&= 按位与赋值
^= 按位异或赋值
|= 按位或赋值
注: 编程中1表示true,0表示false
4.3 bitset操作
#include<bitset>
具体使用方式,查询API
4.4 操作符优先级
见下图
隐式基本原则: 小类型向大类型转换,以防止精度丢失.
在表达式中如果有long double,则所有的数据都转换成long double型;
如果有double,则所有的数据都转换成double;
如果有float则其他的数据转换成float型;
如果所有的类型都小于int,则将与提升为整型.
例: int ret = 3.14 + 3 ;
结果为6.过程3.14为double型,3为int,首先将3转换为double型再与3.14相加,得结果6.14,最后将double转换为int.会有编译器警告.
4.5.1 强制转换
static_cast 所有可以隐式转换的类型都可以用此转换.
dynamic_cast
const_cast
reinterpret_cast
4.1 操作符
+ a + b
- a - b
* a * b
/ a / b
% a % b
! !a
<
<=
>
>=
==
!=
&&
||
sizeof( pa ) 用于计算对象或者类所占用的内存大小,返回类型为size_t.size_t在cstddef中包含.
比如 sizeof(int) 等于4.
new 用于分配heap空间,delete删除空间.
4.2 位操作符
<< 按位左移 向左或右位移移到外面的位丢弃.右边位用0填充
>> 按位右移 如果是无符号数,左边填充0;否则拷贝符号位填充左边位
~ 按位非 将0设置为1,将1设置为0
& 按位与 两个操作数的位都是1时结果为1,否则为0
^ 按位异或 两个操作数的位只有1个为1时结果为1,否则为0
| 按位或 两个操作数的位只要有1个为1时结果为1,否则为0
&= 按位与赋值
^= 按位异或赋值
|= 按位或赋值
注: 编程中1表示true,0表示false
4.3 bitset操作
#include<bitset>
具体使用方式,查询API
4.4 操作符优先级
见下图
隐式基本原则: 小类型向大类型转换,以防止精度丢失.
在表达式中如果有long double,则所有的数据都转换成long double型;
如果有double,则所有的数据都转换成double;
如果有float则其他的数据转换成float型;
如果所有的类型都小于int,则将与提升为整型.
例: int ret = 3.14 + 3 ;
结果为6.过程3.14为double型,3为int,首先将3转换为double型再与3.14相加,得结果6.14,最后将double转换为int.会有编译器警告.
4.5.1 强制转换
static_cast 所有可以隐式转换的类型都可以用此转换.
dynamic_cast
const_cast
reinterpret_cast
(type)object旧式强制转换
很容易搞忘switch语句的定义,备忘下.
switch(表达式)
{
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
……
case 常量表达式n:
语句n;
break;
default:
语句n+1;
break;
}