繁体   English   中英

C等价于循环的Python范围

[英]C equivalent of Python ranges for loops

我最近才开始使用C语言进行编码,我看到是否存在非独占范围联合的标准实现(最好不使用其他库),例如Python。

我正在寻找以下的C等价物(在Python中):

for k in (range(-1, 2) + range(i-1, i+2)):

仅定义包含具有这些范围的元素的数组是不够的,因为取决于两个范围(取决于i)的交集,数组的大小。 我最好的选择是什么?

你可以使用两个循环:

for (k = -1; k < 2; ++k) {
  do_stuff(k);
}
for (k = i - 1; k < i + 2; ++k) {
  do_stuff(k);
}

或者,在C99中:

int indices[] = {-1, 0, 1, i - 1, i, i + 1};
for (int j = 0; j < 6; ++j) {
  int k = indices[j];
  // ...
}

问题是:

取决于两个范围的交集(取决于i),数组的大小。

这不是问题中代码的工作原理。 如果两个范围相交,则代码将在交叉值上迭代两次。 这里介绍的C代码模仿了这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM