C++primer5.5-5.7 自增自减、箭头、条件操作符

来源:互联网 发布:python中数据清洗的库 编辑:程序博客网 时间:2024/05/01 23:37

简介

  • 前置自增 /减操作符 : 使其操作数加1 / 减1,操作结果是修改后的值

  • 后置自增 /减操作符 : 使其操作数加1 / 减1,操作后产生操作数原来的、未修改的值作为表达式的结果

  • 养成使用前置操作符的习惯 ++i

================================================

一、自增自减操作符

1、前置和后置自增自减操作符

  • 前置自增 /减操作符 : 使其操作数加1 / 减1,操作结果是修改后的值
  • 后置自增 /减操作符 : 使其操作数加1 / 减1,操作后产生操作数原来的、未修改的值作为表达式的结果
  • 只有必要时才使用后置操作符!!p140
int i=0;int j;j=++i;//j=1,i=1j=i++;//j=1,i=2

2、后置自增自减操作符的使用

  • 当我们希望在单个复合表达式中使用变量的当且值,然后再加1 时,通常会使用后置的++ 和 – 操作

  • 在单个表达式中组合使用解引用和自增操作 *iter++

vector<int> ivec;//未初始化的容器,注意不能通过下标来初始化哦。int cnt =10;while(cnt>0)ivec.push_back(cnt--);for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();iter++)cout<<*iter<<endl;//输出从10---1的数//这段程序希望把cnt的值赋给vector对象的下一个元素,然后在下次迭代前cnt值减1。//如果使用前置操作,则是用cnt减1后的值创建ivec的新元素,结果是将9到0十个元素依次添加到ivec中。
vector<int>::iterator iter=ivec.begin();while(iter!=ivec.end())cout<<*iter++<<endl;//因为后自增操作优先于解引用操作,所以*iter++等效于*(iter++).//子表达式iter++使iter加1,然后返回iter原值的副本作为该表达式的结果。//因此解引用操作*的操作数是iter未加1前的副本。

二、箭头操作符

C++语言为包含点操作和解引用操作符的表达式提供了一个同义词:箭头操作符(->).
点操作符用于获取类类型对象的成员:item1.same_isbn(item2);
如果有一个指向Sale_item对象的指针(迭代器),则在使用点操作符前,需对该指针(迭代器)进行解引用:
Sale_item * sp =&item1 ;
(*sp).same_isbn( item2) ;

……………..略

三、条件操作符

  • C++中唯一的一个三元操作符;
  • 格式 : cond ? expr1 : expr2 如果cond为真,那么计算expr1.
  • expr1 和 expr2只有一个表达式被计算。
int i=10,j=20,k=30;int maxval =i >j ? i : j;
int max=i;if(j>max) max=j;if(k>max) max=k;

1、在输出表达式中使用条件操作符

条件操作符优先级相对低。

。。。。。。。。。

0 0
原创粉丝点击