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

标签 c++ qt

我正在查看 Qt 特定的 C++ solution对于典型的生产者/消费者问题。这是生产者的代码:

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:完整源代码here

最佳答案

它生成一个随机字符:A、C、G、T。

Literal "ACGT"char const [5] 类型的数组,然后 [(int)qrand() % 4] 是0 到 3 范围内的随机索引,包括。

关于c++ - 这是什么语法 : "ACGT"[(int)qrand() % 4],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23624999/

相关文章:

c++ - Visual Studio 中的 Qml

c++ - 使用没有 new 的 QThread

qt - 我可以在Qt4.8.5中使用qt快速编译器吗

c++ - 在不使用 getline 的情况下在 C++ 中读取 stdin

c++ - 命令行参数被截断

c++ - 成员函数中的静态变量

c++ - 按照初学者 cv_bridge 教程,不起作用

python - C++ 的 SWIG 包装问题 --> python

c++ - 如何去掉标题栏左侧的默认菜单——Qt?

qt - 如何在 QML 中查询键盘修饰符?