Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

[C] Output of this simple program

  1. Jul 28, 2012 #1
    Hi, its been some time since I did C prog (its not my field), but I do recall somethings from what I did 4 years ago.

    What would be the output of the below prog (I know its a simple one), but I think it would execute for i = 5,6,7,8,9,10 (6 times), the printf statement. Yet some of my friends say it would only execute once and others are saying it would not even execute once.

    *****

    main()
    {
    int i;
    for (i = -1; i <=10; i++)
    {
    if (i <5)
    continue;

    else
    break;

    printf("Gets printed only once!!");
    }
    }

    ****

    My current logic goes like this: at i = -1 to 4, the condition i<5 is true. So it would just go back to the for loop to keep incrementing i (from i++). At i =5, the statement i<5 is false. So it would go to else. It would encounter break; and then get out of the if-else. Being still inside the for loop it would print "Gets printed only once!!". After that it would make i = 6, break from if-else and do the same. Likewise for 7,8,9,10. So total 6 times.

    I don't have a C compiler to verify, but I would like to know the truth.

    Thanks.
    Jay.
     
  2. jcsd
  3. Jul 28, 2012 #2

    chiro

    User Avatar
    Science Advisor

    Re: Output of this simple program

    Hey Jay_ and welcome to the forums.

    I don't know about the if-else statement how it's parsed, but if it's parsed like it should be, you will never get any printed output whatsoever.

    The reason is that you call a break statement which exits the loop as soon as it is encountered. The continue statement will go back to the start of the loop, so you won't get the print statement happening, but the break will terminate from the loop immediately.
     
  4. Jul 28, 2012 #3

    uart

    User Avatar
    Science Advisor

    Re: Output of this simple program

    Hi Jay. The break statement doesn't cause it to exit the if-then, it causes it to exit the "for" loop. So, as chiro said, the printf statement is never executed at all.
     
  5. Jul 28, 2012 #4
    Re: Output of this simple program

    Code (Text):

    main()
    {
        int i;
        for (i = -1; i <=10; i++)
        {
            if (i <5)
                continue;  // goes to next iteration of loop
            else
                break; // breaks out of loop
            printf("Gets printed only once!!"); // executes never
        }
    }
     
    If you used a nesting (indentation) system you would find the code easier to read and would perhaps avoid this problem in future.

    There are plenty of good free compilers. Try Visual Studio Express (Microsoft) or gcc (Mac and Linux).
     
    Last edited: Jul 28, 2012
  6. Aug 3, 2012 #5
    thanks guys.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: [C] Output of this simple program
  1. C programming (Replies: 9)

Loading...