Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7509653
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 29, 20262026-05-29T22:58:51+00:00 2026-05-29T22:58:51+00:00

I have a do-while loop that needs to log a message once (so it

  • 0

I have a do-while loop that needs to log a message once (so it doesn’t clutter the log) each time its status (e.g. pass/fail) changes, but still has to do other things each time it goes through the loop. Using a simple boolean variable can basically tell you if you’ve already logged that message, which works once you’re in a known condition. However, if you want the message to be printed the first time in either case (pass/fail), you have to account for that. For example, if you default your condition to true, and it is, in fact, true the first time, it won’t log the ‘True’ message b/c it thinks it was already true (and vice-versa for i.c. false).

This seems like it would be a good place for a nullable boolean with i.c.=Null, but in languages where those aren’t present, what’s one to do?

The simplest solution I could think of would be to use an extra boolean variable like ‘firstTime = True’, but using that always bothers me as an elementary workaround when I feel like there should be a more delicate way to handle it. Another option is to use the breakout condition of the do-while as your initial condition for whatever variable you’re using as your conditional, but that can be confusing when someone reads int status = STATUS_QUIT, and it certainly requires more explanatory comments than bool firstTime = true. A third option would be to use an enum instead of a bool and have {firstTime, true, false} or something.

Are there other reasons for using one over the other, or are there better ways of doing this?

Code example with two options I came up with:

Using bool firsttime:

bool firstTime = true, infoFound = false;
do
{
    if (getInfo())
    {
        if (!infoFound)
        {
            // log it (ONCE)(important)
            infoFound = true;
        }
        // use info (every time)
    }
    else if (infoFound || firstTime)
    {
        // log it (ONCE)(important)
        infoFound = false;
        firstTime = false;
    }
// FYI, WaitForStatusUpdate is a blocking call...
} while (STATUS_QUIT != WaitForStatusUpdate());

Use the while loop ‘break-out condition’ as the initial condition for a check variable:
(status is updated at the end of the do-while, so the do section will not be executed ever again if status == breakOutCondition; we can use this to our advantage here and set status = breakOutContition initially – the first time through it will be breakOutCondition but any subsequent loop will be something else… Still not sure I like this as it’s kind of a hack…

bool infoFound = false;
int status = STATUS_QUIT;
do
{
    if (getInfo())
    {
        if (!infoFound)
        {
            // log it (ONCE)(important)
            infoFound = true;
        }
        // use info (every time)
    }
    else if (infoFound || firstTime)
    {
        // log it (ONCE)(important)
        infoFound = false;
    }
    status = WaitForStatusUpdate();
} while (STATUS_QUIT != status);

(I’m tagging this as c++ since that’s what I’m using, but this really could apply to any language with similar constructs)

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-29T22:58:52+00:00Added an answer on May 29, 2026 at 10:58 pm

    Wouldn’t an enum be clearer?

    enum State { Unknown, Pass, Fail };
    State state = Unknown;
    ...
    State newState = getInfo() ? Pass : Fail;
    if (newState != state) { log();  state = newState; }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a file ajax.php that needs to trigger a big while loop and
I have a script that uses a simple while loop to display a progress
So I have a Linux program that runs in a while(true) loop, which waits
The while loop I have while reading in from a file doesn't break. I'm
I have a while loop that constructs a url for an SMS api. This
I've got an inventory table that needs to have certain in each row, and
I have a tabled view in a while loop, where a user can view
I'm trying to understand how a while loop looks in IL. I have written
I have a Label, whose content is displayed by a while loop. when i
Using parent child relationship where a parent can have children while each child has

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.