C++问题:*c++=a[i]<b[j]?a[i++]:b[j++];

2025-01-04 14:08:06
推荐回答(3个)
回答1:

void fun(int a[], int n, int b[], int m, int *c)
{
    int i,j;
    for(i=j=0;i    {
        *c++=a[i]    }
    while(i    while(j}

换成容易懂的写法就是

void fun(int a[], int n, int b[], int m, int *c)
{
    int i = 0, j = 0, ci = 0;
    while(i < n && j < m)
    {
        if(a[i] < b[j])
        {
            c[ci] = a[i];
            i++;
        } else
        {
            c[ci] = b[j];
            j++;
        }
        ci++;
    }
    while(i < n) {
        c[ci] = a[i];
        i++;
        ci++;
    }
    while(j < m) {
        c[ci] = b[j];
        j++;
        ci++;
    }
}

*c++=a[i]

等号左边:

c是个int指针,也可理解为数组

c++就是指针自增,用数组来理解就是,让c指针指向数组中下一个位置

*c是指针取值

c++是先返回后自增,++c是先自增在返回

所以*c++就是取c指针当前所指的int,然后让c指针指向下一个位置

等号右边:

a[i]

(条件) ? (符合条件所返回的值) : (不符合条件所返回的值)

回答2:

*c++=a[i]if(a[i]{*c=a[i];
c++;
i++;}
else
{*c=b[j];
c++;
j++;
}

回答3:

*c++=a[i]if(a[i]{*c=a[i];
c++;
i++;}
else
{*c=b[j];
c++;
j++;
}
改动之后应该可以看懂了吧

下面这个小程序是验证上面的?:中的++运算符的
#include
using namespace std;
int main()
{
int i=1;
int j=2;
int c=i cout< return 0;
}