C++Primer第四章(4)赋值运算符

4.4 赋值运算符

赋值运算符的左侧运算对象必须是一个可修改的左值.

赋值运算的结果是它的左侧运算对象,并且是一个右值. 相应的, 结果的类型就是左侧运算对象的类型.

如果赋值运算符的左右两个运算对象类型不同, 则右侧运算对象将转换成左侧运算对象的类型.

int k;
k = 3.14159;   //结果:类型是int,值是3

C++11新标准允许使用花括号括起来的初始值列表作为赋值语句右侧运算对象. 如果左侧运算对象是内置类型, 那么初始值列表最多只能包含一个值, 而且该值即使转换的话其所占空间也不应该大于目标类型的空间.

对于类类型来说, 赋值运算的细节由类本身决定.

无论左侧运算对象的类型是什么, 初始值列表都可以为空. 此时, 编译器创建一个值初始化的临时变量并将其赋给左侧运算对象.

赋值运算满足右结合律

image-20211208182813400

对于多重赋值语句中的每一个对象, 它的类型或者右边对象的类型相同, 或者可由右边对象的类型转换得到.

int ival, *pval;
ival = pval = 0; //错误,不能把指针的值赋给int
string s1, s2;
s1 = s2 = "OK"; //字符串字面值"OK"转换成string对象
赋值运算优先级较低

因为赋值运算的优先级相对较低, 所以通常需要给赋值部分加上括号.

切勿混淆相等运算符和赋值运算符
复合赋值运算符
int sum = 0;
for(int val = 1; val <= 10; ++val)
	sum += val;  //等价于sum = sum + val
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

远离蒙昧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值