来源
https://blog.csdn.net/qq_37375427/article/details/79191078
逗号表达式
逗号操作符,
可以构成逗号表达式
- 逗号表达式用于将多个子表达式连接为一个表达式
- 逗号表达式的值为最后一个子表达式的值
- 逗号表达式的前N-1个表达式的值可以没有返回值
- 逗号表达式按照从左向右的顺序计算每个表达式的值
exp1,exp2,……,expn-1,expn
下面我们还是以一个例子来说明逗号表达式概念与性质:
#include <iostream>
#include <string>
using namespace std;
void func(int i)
{
cout << "func() : i = " << i << endl;
}
int main()
{
int a[3][3]={
(0,1,2), //注意,这里的二维数组的初始化用的是(),而不是{},所以里面的内容构成逗号表达式(0,1,2)的值就为2.
(3,4,5), //(3,4,5)的值为5
(6,7,8) //(6,7,8)的值为8,所以这个数组实际上,只初始化了前三个数,后面的数全为0;
};
int i = 0;
int j = 0;
while(i < 5)
func(i), /*注意这里是逗号,而不是分号,所以这个表达式等同于{func(i);i++}*/
i++;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cout << a[i][j] << endl;
}
}
(i,j) = 6; //此处给逗号表达式赋值,实际上是给j赋值,而i值不变
cout << "i = " << i << endl;
cout << "j = " << j << endl;
return 0;
}
运行结果
func() : i = 0
func() : i = 1
func() : i = 2
func() : i = 3
func() : i = 4
2
5
8
0
0
0
0
0
0
i = 3
j = 6
总结
- 逗号表达式从左向右计算子表达式的值
- 逗号表达式的值为最后一个子表达式的值
- 操作符重载无法实现逗号操作符的原生语义
- 工程开发中不要重载逗号操作符