[C] Output of this simple program

  • Thread starter Thread starter Jay_
  • Start date Start date
  • Tags Tags
    Output Program
AI Thread Summary
The discussion centers around a C programming code snippet and its expected output. The code features a loop that iterates from -1 to 10, with an if-else structure controlling the flow. The main point of contention is the behavior of the `continue` and `break` statements. Participants clarify that the `break` statement exits the entire loop immediately, while `continue` skips to the next iteration. As a result, the `printf` statement, which is intended to print "Gets printed only once!", is never executed. The consensus is that the output will be nothing, as the loop terminates before reaching the print statement. Additionally, suggestions for using free compilers like Visual Studio Express or gcc are provided for testing the code.
Jay_
Messages
181
Reaction score
0
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.
 
Technology news on Phys.org


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.
 


Jay_ said:
It would encounter break; and then get out of the if-else.

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.
 


Code:
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:
thanks guys.
 
Thread 'Is this public key encryption?'
I've tried to intuit public key encryption but never quite managed. But this seems to wrap it up in a bow. This seems to be a very elegant way of transmitting a message publicly that only the sender and receiver can decipher. Is this how PKE works? No, it cant be. In the above case, the requester knows the target's "secret" key - because they have his ID, and therefore knows his birthdate.
Back
Top