c加加逗号表达式基础

img


只输出表达式n的话,前面的表达式123是不是没有用?那它的意义是什么?

虽然 逗号表达式最终表达式的值 是 最右值,但是 它的计算过程是 从左往右一个个依此进行的;
也就是这过程里,其他表达式可以是赋值语句,从而可以改变很多变量,这就是它存在的意义

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7555413
  • 这篇博客你也可以参考下:打印杨辉三角 要求按照规定格式打印前N行杨辉三角。
  • 除此之外, 这篇博客: 一本书的页码从自然数1开始编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。中的 2.区间法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include<stdio.h>
    #include<math.h>
    int main()
    {
        int a[10]= {0},b[10]= {0},n,m,i=1,k=0,j,h,p,sum;
        scanf("%d",&n);
        while(n!=0)
        {
            m=n%10;
            a[i]=m;
            n/=10;
            k++;
            i++;
        }
        h=k;
        for(j=0; j<h-1; j++)
        {
    
            for(p=0; p<10; p++)
                b[p]=b[p]+a[k]*(k-1)*pow(10,k-2);
            for(p=0; p<a[k]; p++)
                b[p]+=pow(10,k-1);
            sum=1;
            for(p=1; p<k; p++)
                sum+=a[p]*pow(10,p-1);
            b[a[k]]=sum+b[a[k]];
            k--;
        }
        for(j=0; j<h; j++)
            b[0]-=pow(10,j);
        for(j=0; j<=a[1]; j++)
            b[j]=b[j]+1;
        for(p=0; p<10; p++)
            printf("%d ",b[p]);
        return 0;
    }
    

    区间法的思路就稍微大一点,利用for就可轻松解决(也可以利用递归的方法)。但不知道为什么,数字稍微大一点时,用codeblocks运行结果就会出错,但用别的编译器运行,就没什么问题了。

  • 以下回答来自chatgpt:

    问题解答:

    在C++中使用逗号表达式时,如果只输出表达式n的结果,前面的表达式123并不是无用的。它们分别有以下作用:

    1.第一个表达式1:在逗号表达式中,逗号左边的表达式首先会被执行,这里的1就是第一个表达式。它的作用可以是任何有副作用的表达式,例如计算一个变量的值,或者执行一个函数等。在该问题中,可能是计算行列式系数的值,但需要查看具体实现。

    2.第二个表达式2: 在该问题中,可能是计算行列式中选中项的乘积。

    3.第三个表达式3: 在该问题中,可能是在输出时,输出格式的控制,例如在序列中间添加逗号等。

    具体的实现需要查看代码,如果只是单纯的输出表达式n的结果,可以去掉1和2,只保留表达式n即可。

    例如:假设有一个逗号表达式(1+2, 3+4, 5+6),那么在这个表达式中,第1个表达式1为1+2,第2个表达式2为3+4,第三个表达式3为5+6。如果只需要输出第3个表达式的结果11,则可以写成:

    int res = (1+2, 3+4, 5+6); //执行完逗号表达式后,res的值为11
    cout << res << endl; //输出结果11
    

    需要注意的是,虽然在逗号表达式中前面的表达式可以有副作用,但是不建议滥用逗号表达式,因为逗号表达式容易造成代码的可读性和可维护性降低,建议对逗号表达式的使用多加思考。

    参考资料:

    1. C++逗号表达式 https://www.runoob.com/cplusplus/cpp-comma-operator.html

    2. 《C++ Primer》第五版,第4.9节 “逗号运算符”。

    3. 行列式C++代码演示 http://www.cnblogs.com/Wescnblogs/p/6567852.html


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^