【c++深度解析3】逗号操作符

本文详细解析了C++中的逗号操作符,包括其构成的表达式特性、使用场景及注意事项,通过实例展示了逗号操作符在数组初始化、循环控制及变量赋值中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题1.在c++逗号操作符可以重载吗,重载逗号操作符有意义吗?

答: 在c++中可以重载逗号操作符,在工程开发中不要重载逗号操作符,那是无意义的

下面我们复习下逗号操作符:

1.逗号操作符(,)可以构成逗号表达式

2.逗号表达式用于将多个子表达式连接为一个表达式

3.逗号表达式的值为最后一个表达式的值

4.逗号表达式中的前n-1个子表达式可以没有返回值

5.逗号表达式按照从左向右的顺序计算每个子表达式的值

exp1,exp2,...,exp3

以一个代码例子说明该逗号操作符的特性

#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),  // 1.该处赋值啥意思
        (3, 4, 5),
        (6, 7, 8)
    };
    
    int i = 0;
    int j = 0;
    
    while( i < 5 )    
        func(i),   // 2.该处会出现死循环吗?
    
    i++;
        
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
        {
            cout << a[i][j] << endl;   // 3.该处输出结果是多少
        }
    }
    
    (i++, j) = 7; // 4.该表达式表示啥意思
    
    cout << "i = " << i << endl;
    cout << "j = " << j << endl;

    return 0;
}

 

输出结果如下:

1.  (0,1,2) 是个逗号表达式,该句执行完 的值为最后一个表达式的值即为2

       int a[3][3] = {
        (0, 1, 2),  // 1.该处赋值啥意思
        (3, 4, 5),
        (6, 7, 8)
    };  该函数的赋值其实  等价于  int  a[3][3] = {2,,5,8}   所以才有    

    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
        {
            cout << a[i][j] << endl;   // 3.该处输出结果是多少
        }
    }  

语句中输出的结果为  2,5,8 ,0,0,0,0,0,0  要想正确的给 int  a[3][3]数组赋值应改为

   int a[3][3] = {
        {0, 1, 2},  // 1.该处赋值啥意思
        {3, 4, 5},
        {6, 7, 8}
    }; 将 () 改为 {}

2. while( i < 5 )    
        func(i),   // 2.该处会出现死循环吗?
    
    i++;  发现其正确打印了 0,1,2,3,4  并没有死循环,原因为     func(i),  i++;   为逗号表达式将其连接为了一条语句,故未出现死循环。

3   (i++, j) = 7; // 4.该表达式表示啥意思

该语句执行,1.由逗号表达式的执行顺序知道先执行i++将i变为4  2.由 逗号表达式的值为最后一个表达式的值知道 (i++,j)执行完后该表达式的值为 j    即 (i++, j) = 7;   即将j赋值为7

故看见后面打印为 4,7;

 


    
  

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值