c - 需要解释一下这段代码是如何工作的

标签 c

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

srandom(time(NULL));

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

虽然它按预期工作,但我只是想了解它如何在没有“+=”或类似内容的情况下将数字添加到下一个数组元素。

最佳答案

你可以这样重写:

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

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

关于c - 需要解释一下这段代码是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55417773/

相关文章:

c - Lex 如何模拟模式或上下文堆栈

c - 获取读阻塞以来耗时

c - C 中的输入验证

c# - WPF 相当于 Paint 事件中的 Windows 窗体 Region.Xor 吗?

c - 警告 : assignment makes integer from pointer without a cast as return of the function call

在 C 中调用函数

c - 为什么这个结构没有正确对齐?

c - 我在哪里可以找到 libav、ffmpeg 等的现代教程?

c++ - 从 C++ 库代码到 C 应用程序代码 : symbol lookup error

将指针复制到结构在c中不起作用