逗号操作符是一组由逗号分隔的表达式,这些表达死从左向右计算.逗号表达式的结果是其最后边表达式的值。如果最后边的操作数是左值,则逗号表达式的值也是左值。此类表达式通常用于for循环:
int cnt=iec.size();
for(vector<int>::size_type ix=0;ix!=ivec.size();++ix,--cnt)
ivec[ix]=cnt;
上述的for语句在循环表达式中使ix自增1而cnt自减1。每次循环均要修改ix和cnt的值。当检验ix的条件判断成立时,程序将下一个元素重新设置为cnt的当前值.
以上摘自书146面..
我的理解
int a(){
return 1,2,3;
}
那么其他地方调用这个方法返回值是最右边的那个3.
又如:
// container.cpp : 定义控制台应用程序的入口点。 //
#include "stdafx.h"
#include<iostream>
#include<string>
#include<stdexcept>
#include<vector>
using namespace std;
int& a(int &b){ return 1,2,b; }
int _tmain(int argc, _TCHAR* argv[])
{ int as =3;
a(as)=10;//这里返回了逗号最后边的引用b,所以可以赋值,相当于给as赋值为10
cout<<"as:"<<as<<endl;
cout<<a(as)<<endl;//同样,这里就是返回的as的值
return 0; }
控制台输出:
as:10
10
按任意键退出.