这是什么语法: "ACGT" [(int)qrand() % 4]

What is this syntax: "ACGT"[(int)qrand() % 4]

本文关键字:qrand int 是什么 语法 ACGT      更新时间:2023-10-16

我正在寻找Qt特定的c++解决方案,以解决典型的生产者/消费者问题。下面是生成器的代码:

class Producer : public QThread
{
public:
    void run()
    {
        qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
        for (int i = 0; i < DataSize; ++i) {
            freeBytes.acquire();                                 // (1)
            buffer[i % BufferSize] = "ACGT"[(int)qrand() % 4];   // (2)
            usedBytes.release();
        }
    }
};

我无法理解for循环中的第二行,即"ACGT"[*]语法。它到底是做什么的?这是特定的Qt或这是我不知道的c++语法?

PS:完整的源代码在这里

从a, C, G, t中生成一个随机字符

Literal "ACGT"为类型为char const [5]的数组,则[(int)qrand() % 4]为0 ~ 3范围内的随机索引,包括

" ACGT "[*]语法。它到底是做什么的?

qrand() % 4为0 ~ 3之间的随机数。该随机数用作字符串""ACGT"的索引。因此,整个表达式以相同的概率产生随机字符a, C, G或T。