需要有关此代码如何工作的解释

Vid*_*dak -1 c

我在大学学习C,但我不理解教授写的这段代码,也没有解释(我知道它会向下一个数组元素添加一个从0到99的随机数,但不知道如何)

srandom(time(NULL));

for(i = 0; i < n; i++)
    a[i] = i == 0 ? random() % 100 : a[i-1] + random() % 100;

Run Code Online (Sandbox Code Playgroud)

尽管它可以按预期工作,但我只想了解它如何在不带“ + =”或类似内容的情况下将数字添加到下一个数组元素。

Shi*_*zou 6

您可以这样重写它:

for(i=0;i<n;i++) {
    if (i == 0) {
        a[i] = random()%100;
    } else {
        a[i] = a[i-1] + random()%100;
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,您看到at的a[1]值为a[0] + random()%100,依此类推。该if是必要的,因为当i是0,你没有以前的值,使用(a[-1]将是一个错误)。三元运算符condition ? a : b可以理解为“如果条件为真,则为a;否则为b”。