C Programming - Control Instructions - Discussion

Discussion Forum : Control Instructions - Find Output of Program (Q.No. 3)
3.
What will be the output of the program?
#include<stdio.h>
int main()
{
    int a = 500, b = 100, c;
    if(!a >= 400)
        b = 300;
    c = 200;
    printf("b = %d c = %d\n", b, c);
    return 0;
}
b = 300 c = 200
b = 100 c = garbage
b = 300 c = garbage
b = 100 c = 200
Answer: Option
Explanation:

Initially variables a = 500, b = 100 and c is not assigned.

Step 1: if(!a >= 400)
Step 2: if(!500 >= 400)
Step 3: if(0 >= 400)
Step 4: if(FALSE) Hence the if condition is failed.
Step 5: So, variable c is assigned to a value '200'.
Step 6: printf("b = %d c = %d\n", b, c); It prints value of b and c.
Hence the output is "b = 100 c = 200"

Discussion:
33 comments Page 2 of 4.

Nikhil said:   1 decade ago
@Naveen.

Hello, i want to ask one doubt regarding NOT logic operator.
Is !a=0 , for a having value other than zero. Like a=300?

But @levin max
Said that !a>=400 as a<=400. If this is right. then for a=300 the IF condition gets TRUE. and the value b=300 gets assigned, and the output will be displayed as b=300 and c=200.

So please clarify me REGARDING not OPERATOR.

Botta said:   1 decade ago
@Nikhil
you are not supposed to take your own values to 'a' since 500 is already assigned to it.

Jasson said:   1 decade ago
May be the answer is wrong because there is no begin and end brackets for if loop in that case only first statement executed and second one may be garbage value i.e. in my opinion option B is correct. If I wrong please comment.

Ayyappa said:   1 decade ago
'b' takes up the initial value i.e. 100 since the condition (!a>=400) fails. You take that condition to be (a<400) but the value of a is 500 so the condition is false and then 'c' is placed out of the if loop so it takes up 200.

Soumya said:   1 decade ago
I am having a doubt with how C is getting the value of 200 even if the condition is false and we don't know the position of C whether it is outside the loop or not.

Meet123 said:   1 decade ago
Actually if statement execute the statement which immediately follows it conditional statement.

So in this case b=300. Which will be either executed or not executed whether condition is true or false. So condition is false and immediate condition is not executed.

Mayank bhardwaj said:   1 decade ago
Yes because when we don't uses braces then if statement take only first statement.

X-hedow said:   1 decade ago
! means not equal to which in the case is 500.

Then I think we should start considering 'b' and 'c'.

Therefore 'b' is true.

But as for 'c' I do not understand where it's value came from.

Bhaskar said:   1 decade ago
What is the difference between !(a<=40) and (!a<=40)?

Ratna said:   1 decade ago
When there is no body part, loop ended at the immediate semicolon.


Post your comments here:

Your comments will be displayed after verification.