我可以创建一个从某个指针开始并在它开始的地方结束的循环吗?

时间:2016-05-07 12:05:56

标签: c loops pointers

我正在尝试构建类似于时钟策略算法的东西   现在我需要我的循环到一个完美的时钟从一个指针开始,如果它没有找到它正在寻找的东西那么结束它,即: -
for(i=ptr;i<50;i++)
然后,如果它没有找到它正在寻找的东西,它将从中循环 ( i = 0 ; i < ptr; i++)
有没有办法在一个循环中制作这个逻辑?

3 个答案:

答案 0 :(得分:3)

do循环中使用模运算:

i = ptr % 50;
do{
    //body of loop
    i = (i+1) % 50;
} while(i != ptr);

答案 1 :(得分:0)

我从你的问题中了解到,你想首先检查一个子范围,如果它不满足你的条件,那么去休息范围,这基本上是检查整个范围。

您可以在单个循环中完成此操作,只需更改循环逻辑。而不是从值开始上升到范围,从较高范围开始到较低范围。这会自动满足要求。

这样的东西
for (int i = 50; i > 0; i-- )

将完成这项工作。它将结合两个循环的有效性,如

  • for ( i=ptr; i < 50; i++)
  • for ( i=0 ; i < ptr; i++)

答案 2 :(得分:0)

好吧,你可以尝试某种使用%的黑客攻击。

问题是,你想让ptr被击中一次或两次吗?

如果只有一次,以下就足够了。

for (i = ptr + 1; i != ptr; i = (i + 1) % 50)

如果你想让循环完全从ptr开始,并且完全以ptr结束,你必须保留一些溢出标志来处理它。

说实话,只使用两个循环可能是个更好的主意。更清楚你尝试做什么,而且更不容易出错。