《C++ Primer》 第四章 表达式

《C++ Primer》 第四章 表达式

重载运算符:为已存在的运算符赋予了另外一层含义。

(-m)/n和m/(-n)等于-(m/2),m%(-n)等于m%n,(-m)%n等于-(m%n)。

溢出:就散结果超出该类型所能表示的范围。

auto pbeg = v.begin();
//输出元素直到遇到第一个负值为止
while(pbeg!=v.end()&&*beg>=0)
	cout<<*pbeg++<<endl;//输出当前值并将pbeg向前移动一个元素

后置递增运算符的优先级高于解引用运算符,因此*pbeg++等价于 *(pbeg++)。这条语句输出pbeg开始时指向的那个元素,并将指针向前移动一个位置。

&:运算对象的对应位置都为1,结果为1

|:运算对象的对应位置中只要有一个为1,结果就为1

^:运算对象的对应位置不同为1,相同为0

sizeof(ia)/sizeof(*ia) 返回ia的元素数量

命名的强制类型转换:

cast-name(expression)

cast-name是static_cast、dynamic_cast、const_cast和reinterpret_cast

static_cast: 任何具有明确定义的类型转换,只要不包括底层const,都可以用static_cast。例如,通过将一个运算对象强制转换为double类型就能使表达式执行浮点数除法。

//执行强制类型转换以便指向浮点数除法
double slope = static_cast<double>(j) / i;

const_cast:只能改变运算对象的底层const

const char *pc;
char *p = const_cast<char*>(pc); //正确,但是通过p写值是未定义的行为

const char *cp;
//错误:static_cast不能转换掉const性质
char *q=static_cast<char*>(cp);
static_cast<string> (cp);	//正确,字符串字面值转换成string类型
const_cast<string> (cp);	//错误,const_cast只改变常量属性

reinterpret_cast:

通常为运算对象的位模式提供低层次上的重新解释。

int *ip;
char *pc = reinterpret_cast<char*>(ip);
//pc所指的真实对象是一个int而非字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

1100dp

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值