简介
前置自增 /减操作符 : 使其操作数加1 / 减1,操作结果是修改后的值;
后置自增 /减操作符 : 使其操作数加1 / 减1,操作后产生操作数原来的、未修改的值作为表达式的结果
养成使用前置操作符的习惯 ++i
================================================
一、自增自减操作符
1、前置和后置自增自减操作符
- 前置自增 /减操作符 : 使其操作数加1 / 减1,操作结果是修改后的值;
- 后置自增 /减操作符 : 使其操作数加1 / 减1,操作后产生操作数原来的、未修改的值作为表达式的结果
- 只有必要时才使用后置操作符!!p140
int i=0;int j;
j=++i;//j=1,i=1
j=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、在输出表达式中使用条件操作符
条件操作符优先级相对低。
。。。。。。。。。
略