100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 4.4 赋值运算符 4.5 递增和递减运算符

4.4 赋值运算符 4.5 递增和递减运算符

时间:2024-04-08 10:55:50

相关推荐

4.4 赋值运算符 4.5 递增和递减运算符

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

如果左侧是内置类型,初始值列表最多只能包含一个值,转换后空间不大于目标空间

无论运算对象类型是什么,初始值列表都可以为空

赋值运算满足右结合律

int ival,jval;

ival = jval = 0;//正确:都被赋值为0

Int ival, *pval;

Ival = pval = 0;

//错误: 0赋给pval,pval是指针不能赋给ival

赋值运算优先级较低

Note:因为赋值运算符的优先级低于关系运算符的优先级,所以在条件语句中,赋值部分通常应该加上括号。

切勿混淆相等运算符和赋值运算符(=和==)

复合赋值运算符

递增运算符(++)

递减运算符(--)

int i=0, j =0;

j = ++I; // j=1,i=1:前置版本得到递增后的值 将对象本身作为左值返回

j = i++;// j =1,I =2:后置版本得到递增后的值 对象原始值的副本作为右值返回、

建议:除非必要,否则不用递增递减运算符的后置版本

在一条语句中混用解引用和递增运算符

在复合表达式既能将变量+1,-1 又能使用它原来的值,这时候可以用后置版本

auto pbeg = v.begin();

while (pbeg != v.end() && *pbeg >= 0)

cout << *pbeg++ << endl;

*pbeg++很普遍要理解

后置递增运算符的优先级高于解引用运算符

*pbeg++等价于 * (pbeg++)

Pbeg ++ 把 pbeg加1,然后返回pbeg初始值的副本作为其求值结果

建议:简洁可以成为一种美德

运算对象可按任意顺序求值

如果一条 子表达式改变某个运算对象的值

另一条 子表达式又要用该值的话,运算对象的求值顺序很关键

*beg = toupper(*beg++); //错误:未定义

如果先求左侧的值

*beg = toupper(*beg);

如果先求右侧的值

*(beg +1) = toupper(*beg);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。