有人可以解释这行 c++ 吗?
Can someone explain this line of c++?
cout << results[rand()%(sizeof(results)/sizeof(results[0]))] << endl;
结果是一个整数数组:1,2,3,4,5。
有人可以解释一下吗?
这将以随机顺序打印数组条目的值。
它创建一个随机值,并使用取模运算符 %
将其限制为数组大小的索引。
rand()
创建 0 to RAND_MAX
范围内的随机整数值
sizeof(results)/sizeof(results[0])
是你之前在代码中定义的数组的大小,即 int results[5]
模运算符%
组合这些 tww 值,并确保结果不大于数组的大小 (0-4)。
看起来我之前的回答有点简洁...
cout << results[rand()%(sizeof(results)/sizeof(results[0]))] << endl;
可以分解为
int num_elems = sizeof(results)/sizeof(results[0]);
int randomIndex = rand() % num_elems;
int randomValue = results[randomIndex];
cout << randomValue << endl;
更详细一点:
-
sizeof(results)/sizeof(results[0])
计算数组results
中的元素数。 (请注意,这仅在您有权访问数组定义时才有效 - 您不能将其与指向数组的指针一起使用。 -
rand() % num_elems
计算 [0..num_elems-1] 范围内的随机数;这是results
数组的范围。 -
results[randomIndex]
从results
中返回单个随机选择的元素
rand()
返回一个随机数。
您需要数组中大小为 5 的随机数。因此,您可以使用取模运算符来确保不超过 4(0、1、2、3 或 4)。
sizeof(results)
返回数组的总大小(以字节为单位)。 sizeof(results[0])
是该数组中元素的大小。例如,如果sizeof(results[0])
为 8,则sizeof(results)
为 40,因此结果将是 40/8,即 5,这是数组的大小。
相关文章:
- 请解释"函数1(p1,p2,p3);"的输出
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 被解释为低级别const的const对象的地址
- 计算每个节点的树高,帮助我解释这个代码解决方案
- MSVC将仅移动结构参数解释为指针
- 内联程序集printf将整数解释为地址
- 有人能解释一下为什么下界是这样工作的吗C++的
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 我是c ++的新手,你能解释一下在这种情况下的指针吗
- 有人能为我解释一下C++代码吗
- 你能解释一下什么运行时错误是如何解决它的吗?
- 请解释字谜的代码,我看不懂计数器数组,每个值已经是0
- 有人可以向我解释为什么控制台输出 0 吗?
- 有人可以解释一下这段代码如何能够反转字符串
- 在 C++ 中解释多维向量的语句时感到困惑
- 解释一下 for (char c : str) 的作用?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- 隐式重新解释引用时强制转换,没有警告/错误
- 有人可以在 c++ 中解释数组的这种输入
- 有人可以解释一下这个矩阵幂函数是如何工作的吗?