4.4 赋值运算符
4.4 赋值运算符
赋值运算符的左侧运算对象必须是一个可修改的左值。
赋值运算的结果是它的左侧运算对象,并且是一个左值。结果的类型就是左侧运算对象的类型,如果赋值运算符的左右两个运算对象类型不同,则右侧运算对象将转换成左侧运算对象的类型。
赋值运算符满足右结合律
对于多重赋值语句中的每一个对象,她的类型或者与右边对象的类型相同、或者可由右边对象的类型转换得到:
int ival, *pval;
ival = pval = 0; // 错误:不能把指针的值赋给 int
string s1, s2;
s1 = s2 = "OK"; // 正确
赋值运算优先级较低
赋值运算符的优先级低于关系运算符的优先级,在条件语句中,赋值部分通常应该加上括号。
切勿混淆相等运算符==
和赋值运算符=
复合赋值运算符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UN0lyTUG-1613799349598)(./…/images/4.2_复合赋值运算符.jpg)]
任意一种复合运算符都完全等价于
a = a op b