C++ primer 学习(3)

第四章 表达式

强制类型转换(显式转换)

cast-name<type>(expression)
cast-name 是 static_cast 、dynamic_cast、const_cast、reinterpret_cast中的一种。
旧式强制类型转换
(type) expr
type (expr)

note

算术运算符满足左结合律,即运算符的优先级相同,将按照从左向右的顺序组合运算对象。
. 的优先级比*高
有四种运算符规定了运算对象的求值顺序,&& || ?: ,
int i = f1() + f2() 可能会出错,因为无法知道哪个先调用。

bool a = true;
bool b = -a; // b = true

%取余,又称取模,参与取模运算的必须是整数。
在除法运算中,如果两个运算对象的符号相同,则商为正(如果不为0),否则商为负。
商一律向0取整。

在逻辑和关系运算符中,只有!是右结合,其余皆为左结合
在表达式中,类型会向上提升,比如bool 转int。
列表初始化不能存在丢失信息的风险。例如 int k = { 2.718 } // 报错:窄化变换// 第二章内容。

复合赋值运算符例如+= -= *= \= %= <<= >>= &= ^= |=
与 a = a op b 的区别是左侧运算对象的求值次数,复合求值一次,普通两次,一次是作为右边子表达式的一部分求值,另一次是作为赋值运算的左侧运算对象求值。

* iter++ 先计算++ 返回++的指针,然后*解引

位运算中,char 类型会先提升为int 类型。

sizeof 运算符返回一条表达式或一个类型名字所占的字节数。
对解引用指针执行sizeof 运算能得到指针指向对象所占空间的大小,指针不需要有效。
sizeof 运算不会把数组转换成指针来处理。
对string 或vector执行sizeof 运算只返回该类型固定部分的大小,不会计算对象中元素占用了多少空间。

如果一个运算对象是无符号类型,另一个运算对象是带符号类型,且无符号数大于带符号数,则带符号对象转换成无符号的。如果带符号的大于无符号的,则无符号转成带符号,如果不能,带符号转无符号。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值