Bifalgorithm post · Computer science one · While Loops

Why should you avoid a semicolon after a while condition?

Why should you avoid a semicolon after a while condition? (Computer science one · While Loops) — "Consider the following:\n\n1 while(i <= 10);\n\n2 {\n\n3 //pe…

Ideas in this flowchart

  • Unintended infinite loop caused by a semicolon after while
  • The while condition binds to the next executable statement or code block
  • The semicolon makes the statement bound to while empty
  • The code is effectively an empty while loop followed by a separate block
  • The increment of i occurs outside the while loop
  • The condition i <= 10 remains true because i is never incremented in the loop
  • The loop does nothing and continues forever
  • Some compilers warn about the problem, while others do not
  • The code is valid C and compiles and runs, but does not work as intended
  • Use proper syntax and good style to avoid the problem
Feed/

Why should you avoid a semicolon after a while condition?

No cover

Channel

Computer science one

1 page

"Consider the following:\n\n1 while(i <= 10);\n\n2 {\n\n3 //perform some action\n\n4 i++; //iteration\n\n5 }\n\nA similar problem occurs: the while keyword and continuation condition bind to the next executable statement or code block. As a consequence of the semicolon, the executable statement that gets bound to the while loop is empty. What happens is even worse: the program will enter an infinite loop. To see this, the code is essentially equivalent to the following:\n\n1 while(i <= 10) {\n\n2 }\n\n3 {\n\n4 //perform some action\n\n5 i++; //iteration\n\n6 }\n\nIn the while loop, we never increment the counter variable i, the loop does nothing, and so the computation will continue on forever! Some compilers may warn you about this, others will not. It is valid C and it will compile and run, but obviously won’t work as intended. Avoid this problem by using proper syntax and good style."

Flowchart preview
👍
0
0 comments0 shares

Sign in to view and post comments.