How to make something to loop forever.

Pages: 12
Jan 17, 2009 at 7:58am
If you want to make something to loop forever use

either

1
2
3
for(;;){
//put the code you want to loop forever here.
}


or

1
2
3
4
5
6
7
int temp = 0;
while (temp !=1){
/*
put the code you want to loop forever here.
Make sure you never put temp = 1 in the code you put.
*/
}
Jan 17, 2009 at 10:21am
The first thing that comes to mind is when would anyone ever want to loop forever?

Anyway:
1
2
3
while( 1 )
{
}
Jan 17, 2009 at 2:29pm
I use infinite loops quite often so that I can test whether to stop the loop after certain actions
Jan 18, 2009 at 4:59am
Just curious, but am I the only one who uses while(true) {}? I don't think I've ever seen anyone use that; usually the empty for loop.

Jan 18, 2009 at 7:12am
I usually use my "for" example if I need to make a console that does an action with numbers and I need that to loop forever in order for the console to ask you for different nembers every time so it performs the actions again with the different numbers. You can close the console after you have performed the actions with all of the numbers you need.
I can post the code for my console.
Last edited on Jan 18, 2009 at 7:13am
Jan 18, 2009 at 4:05pm
I usually do this:

1
2
3
while (1 < 2) {
//code here.
}
Jan 18, 2009 at 7:48pm
while( true ) or while( 1 ) IHMO is the best and most explicit.
Jan 18, 2009 at 7:53pm
I prefer while( 1 ) because it is usually familiar to Linux users, too.

$ while 1
> clear
> ls -ltr
> sleep 2
> end

To have a window in the background monitoring updates to a log or such file. Although while true or while 1 < 2 or others also work, I have heard them referred to by other professionals as a "while one".
Jan 19, 2009 at 3:07pm
I personally prefer while 1< 2.
Jan 19, 2009 at 3:47pm
closed account (z05DSL3A)
1
2
3
4
5
6
7
#define FOREVER while(true)
...

FOREVER 
{

}
Jan 19, 2009 at 6:04pm
I believe while(true) is the best, as far as I am aware, while(true) & while(1) will be pretty much the exact same, however if you use something like while(1<2) then I think each time the loop iterates it has to check the conditional factor, for while(true) & while(1) there is nothing to check, but for 1<2 it has to check that, so a bit more overhead is used.
Jan 27, 2009 at 10:05am
Encouraged
Any one of the following

while (1)

while (true)

for (;;)

are both good and explicit. They are all instantly recognizable by C and C++ programmers as infinite loops, and the compiler explicitly understands them as such.


Discouraged
Any good compiler should also recognize

while (1 < 2)

to be identical to the first or second above, since "1 < 2" is a constant true expression. However, it is a bit odd to the eyes of nearly all C and C++ programmers, and should be (IMO) avoided.

Using the GCC on WinXP/Pentium, all the above loops compiled to a single JMP instruction.


Flagged variations
However, a loop like:
1
2
3
4
5
bool done = false;
while (!done)
  {
  ...
  }
does require code to check for continuation.


The power of and caveat to using (semi) infinite loops
Infinite loops are a wonderful control structure, because they give you goto powers without encumbering any ire from others, via the break and continue statements.

One form of loop not mentioned is the run-once:
1
2
3
4
5
do
  {
  if (foo) break;
  }
while (false);
It is more or less an explicit example of the goto workaround, and will be recognized by some as such.

It is often useful as a poor-man's (use in C only!) version of C++'s try..catch block.


Propriety
In all cases, however, I would suggest that the use of an infinite loop is likely an indication of design flaw. The number of times that it is "correct" to use one is far fewer than given in practice...

My $0.02.

Hope this helps.
Last edited on Jan 27, 2009 at 10:06am
Feb 5, 2009 at 11:18pm
Alright so Duoas I follow everything you said. Just one question. Lets say in a real world situation I used for(;;) to make an infinite loop in my program. Would my employer want to throw stones at me?
Feb 6, 2009 at 10:47pm
It depends on your employer.

(Each employer will have coding guidelines you should follow.)

;-)
Last edited on Feb 6, 2009 at 10:47pm
Feb 7, 2009 at 3:45am
Haha, alright thanks mate :D
Feb 13, 2009 at 4:31pm
Infinite loops may not be considered good practice when programming for computer platforms. However, they are absolutely essential in embedded systems. If a microprocessor's program is allowed to finish execution, the microprocessor goes dead and the associated hardware becomes useless. To prevent this from happening, we put most or all of the code inside an infinite loop, ensuring that the system stays active until it is meant to be turned off.

Just thought I'd throw out this example of the usefulness of infinite loops.
Feb 14, 2009 at 1:48am
Yeah - that's one thing I do know about infinite loops. Makes them really handy in such cases as you said.
Feb 14, 2009 at 6:48pm
Infinite loops are also good for hardware simulation (e.g. see systemc.org for a C++ based standard that does this) if you have independent threads. Each thread simulates a piece of hardware (assume power stays on). Hardware doesn't finish (unless destroyed).

Infinite loops are also good in threads that support windows. Inside the loop, they watch for events and process. This is common in GUI's.

One thought on which coding to use: for(;;) has the same number of characters as forever... nice mnemonic device to remember it by.
Feb 15, 2009 at 4:15am
@ David C Black
One thought on which coding to use: for(;;) has the same number of characters as forever... nice mnemonic device to remember it by.


Lol :D
Feb 17, 2009 at 6:01am
closed account (jNU5fSEw)
is this article for crashing computers?
Pages: 12