C Programming - Expressions - Discussion
Discussion Forum : Expressions - Find Output of Program (Q.No. 6)
                   
                                       
                                6.
What will be the output of the program?
 
                                    #include<stdio.h>
int main()
{
    int i=4, j=-1, k=0, w, x, y, z;
    w = i || j || k;
    x = i && j && k;
    y = i || j &&k;
    z = i && j || k;
    printf("%d, %d, %d, %d\n", w, x, y, z);
    return 0;
}
Answer: Option
                                                    Explanation:
                                                Step 1: int i=4, j=-1, k=0, w, x, y, z; here variable i, j, k, w, x, y, z are declared as an integer type and the variable i, j, k are initialized to 4, -1, 0 respectively.
Step 2: w = i || j || k; becomes w = 4 || -1 || 0;. Hence it returns TRUE. So, w=1
Step 3: x = i && j && k; becomes x = 4 && -1 && 0; Hence it returns FALSE. So, x=0
Step 4: y = i || j &&k; becomes y = 4 || -1 && 0; Hence it returns TRUE. So, y=1
Step 5: z = i && j || k; becomes z = 4 && -1 || 0; Hence it returns TRUE. So, z=1.
Step 6: printf("%d, %d, %d, %d\n", w, x, y, z); Hence the output is "1, 0, 1, 1".
Discussion:
51 comments Page 5 of 6.
                
                        Geetha said: 
                         
                        1 decade ago
                
                In step 4 how that answer will come. Please give me explanation.
                
                        Purnima said: 
                         
                        1 decade ago
                
                Step 1: i = 4, j = -1, k = 0
Take all values which are greater than or equal to zero as TRUE(T) and which are less than zero as FALSE(F).
Step 2: w = i || j || k
= 4 || -1 || 0
= (T || F) || T
= T || T = T
w = 1
Similarly we get all the expression. Check it out.
                Take all values which are greater than or equal to zero as TRUE(T) and which are less than zero as FALSE(F).
Step 2: w = i || j || k
= 4 || -1 || 0
= (T || F) || T
= T || T = T
w = 1
Similarly we get all the expression. Check it out.
                        Sunitha said: 
                         
                        1 decade ago
                
                @Purnima once check out your logic friend.except zero all the numbers are true. 
And friend @Vicky kumar here the logical operators have left to right priority but When more than one logical operator is used in a statement, NOT is evaluated first, then AND, and finally OR)
i=4, j=-1, k=0
Here in statement z = i && j || k
= 4 && -1|| 0
= T && T || F
= T
= T || F
= T
AND FINALLY RETURNS 1. AS 1 INDICATES TRUE
                And friend @Vicky kumar here the logical operators have left to right priority but When more than one logical operator is used in a statement, NOT is evaluated first, then AND, and finally OR)
i=4, j=-1, k=0
Here in statement z = i && j || k
= 4 && -1|| 0
= T && T || F
= T
= T || F
= T
AND FINALLY RETURNS 1. AS 1 INDICATES TRUE
                        Raji said: 
                         
                        1 decade ago
                
                Please explain about the precedence of && and || operator and also explain the how the second and third step is executed.
                
                        Udaya said: 
                         
                        1 decade ago
                
                I think the Logic is like whenever they got OR operator they are not going for further expression as OR operator will return 1 of one operand is 1. And if the operator is && they were executing the whole expression.
                
                        Pradip walghude said: 
                         
                        1 decade ago
                
                && and || are same priority precedence. It execute right to left.
                
                        Mukesh Modi said: 
                         
                        1 decade ago
                
                Everyone have doubt in step 4 and step 5.
Here I am clearing your doubt if I am not wrong.
Because of precedence order && got 11 number and || 12 and their associativity is L to R.
Step 4: y = i || j &&k; becomes y = 4 || -1 && 0; Hence it returns TRUE. So, y=1.
when I compiled -1 && 0 it returns T. so i|| T then answer is T.
Step 5: z = i && j || k; becomes z = 4 && -1 || 0; Hence it returns TRUE. So, z=1.
i&&j that is 4&&-1 returns T. so T || k then answer is T.
so I think any -ve number(-1) is treated as T.
                Here I am clearing your doubt if I am not wrong.
Because of precedence order && got 11 number and || 12 and their associativity is L to R.
Step 4: y = i || j &&k; becomes y = 4 || -1 && 0; Hence it returns TRUE. So, y=1.
when I compiled -1 && 0 it returns T. so i|| T then answer is T.
Step 5: z = i && j || k; becomes z = 4 && -1 || 0; Hence it returns TRUE. So, z=1.
i&&j that is 4&&-1 returns T. so T || k then answer is T.
so I think any -ve number(-1) is treated as T.
                        Rajesh said: 
                         
                        1 decade ago
                
                @Muesh modi.
 
In step 4: When compiled as per your logic y=4||-1&&0 then first -1&&0 returns false.
And then 4||false becomes t||f returns true.
                In step 4: When compiled as per your logic y=4||-1&&0 then first -1&&0 returns false.
And then 4||false becomes t||f returns true.
                        Neha said: 
                         
                        1 decade ago
                
                According to this program they have considered only from left to right. There is no logic of precedence.
                
                        Mayank said: 
                         
                        1 decade ago
                
                Y = T||T && F/*&& HAS HIGHER PRIORITY THEN ||*/.
Y = T||F.
Y = 1;
                Y = T||F.
Y = 1;
Post your comments here:
 
            
        Quick links
                            Quantitative Aptitude
                                    
                                    Verbal (English)
                                    
                                    Reasoning
                                    
                                Programming
                                    
                                    Interview
                                    
                                     Placement Papers