这是什么语法: "ACGT" [(int)qrand() % 4]
What is this syntax: "ACGT"[(int)qrand() % 4]
我正在寻找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。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- int(c) 和 c-'0' 之间的区别。C++
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 是否可以从int转换为enum类类型
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 'short int'持有的值溢出,但"自动"不会溢出?
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 调用'begin(int [n])'没有匹配函数
- 没有显式声明的int[]中的foreach
- 在c++中访问int到类对象的映射时出错
- 为什么我无法更改"set<set>"循环中的值<int>
- 长 长 int 不要 长 int 好
- C++程序在循环后给出奇怪的int值
- 如何计算数据类型的范围,例如int
- 如果"new int"返回"int*",那么为什么"new int[n]"不返回"int**"?
- 这是什么语法: "ACGT" [(int)qrand() % 4]