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 1 of 6.
                
                        Suneeta mishra said: 
                         
                        3 years ago
                
                And (&&)operator should be true for all conditions and in OR (||), at least one condition should be true.
                
                     (1)
                
            
                        Adi sha said: 
                         
                        4 years ago
                
                Precedence is && then || (Associativity is right to left).
                
                     (1)
                
            
                        Rutuja said: 
                         
                        4 years ago
                
                Please explain why step 3 is false.
If T && F then it's T or F?
                If T && F then it's T or F?
                     (2)
                
            
                        Anomie said: 
                         
                        5 years ago
                
                @All. 
Kindly read below logical operators with examples
&& Logical AND. True only if all operands are true.
If c = 5 and d = 2 then, expression ((c==5) && (d>5)) equals to 0.
|| Logical OR. True only if either one operand is true.
If c = 5 and d = 2 then, expression ((c==5) || (d>5)) equals to 1.
! Logical NOT. True only if the operand is 0
If c = 5 then, expression !(c==5) equals to 0.
                Kindly read below logical operators with examples
&& Logical AND. True only if all operands are true.
If c = 5 and d = 2 then, expression ((c==5) && (d>5)) equals to 0.
|| Logical OR. True only if either one operand is true.
If c = 5 and d = 2 then, expression ((c==5) || (d>5)) equals to 1.
! Logical NOT. True only if the operand is 0
If c = 5 then, expression !(c==5) equals to 0.
                     (1)
                
            
                        Sahana S Shenoy said: 
                         
                        8 years ago
                
                All the expressions evaluates from left to right(in case of RHS and in case of w=expression, it is right to left that means expression is evaluated first then assigned to w) as the AND  has the highest precedence over ||.
--->the number other than "zero" is always "true"
so w=T||T||F----->T||F
w=T
x=T&&T&&F---->T&&F
x=F
y=T||T&&F----->T||F
y=T
z=T&&T||F------>T||F
z=T.
                --->the number other than "zero" is always "true"
so w=T||T||F----->T||F
w=T
x=T&&T&&F---->T&&F
x=F
y=T||T&&F----->T||F
y=T
z=T&&T||F------>T||F
z=T.
                     (4)
                
            
                        MAHESH said: 
                         
                        8 years ago
                
                Expressions are evaluated from RIGHT TO LEFT.
Then compute the result.
                Then compute the result.
                     (1)
                
            
                        Prashant said: 
                         
                        8 years ago
                
                Step 4:     y = i || j && k;
In step 4 put expression into brackets like : y = (i || j ) && k which will giev o/p as 0 which mean in real time && has a greater precedence than II so is the answer.
                In step 4 put expression into brackets like : y = (i || j ) && k which will giev o/p as 0 which mean in real time && has a greater precedence than II so is the answer.
                        Dipak said: 
                         
                        8 years ago
                
                Binary Number is a combination of 0 and 1.
So in above example, positive(+) numbers are assumed as 1 and negative(-) numbers are assumed as 0.
We all know ANDing operation of two binary digit i.e.
1 1
1 0
-------------
1 0
Note: ANDing means multiplication of binary numbers.
we all know ORing operation of two binary digits i.e.
1 1
1 0
---------------
1 1
Note: ORing means addition of binary numbers.
                So in above example, positive(+) numbers are assumed as 1 and negative(-) numbers are assumed as 0.
We all know ANDing operation of two binary digit i.e.
1 1
1 0
-------------
1 0
Note: ANDing means multiplication of binary numbers.
we all know ORing operation of two binary digits i.e.
1 1
1 0
---------------
1 1
Note: ORing means addition of binary numbers.
                        Sid said: 
                         
                        8 years ago
                
                @Prichita.
X=I && j && k;
So substitute values,
X=4 && -1&&0;
--> here 0 means false ....&& (Anding) any value with 0 become 0 only that is false only.
                X=I && j && k;
So substitute values,
X=4 && -1&&0;
--> here 0 means false ....&& (Anding) any value with 0 become 0 only that is false only.
                        Prichita said: 
                         
                        8 years ago
                
                How did we get x=0? 
Why is it false?
                Why is it false?
Post your comments here:
 
            
        Quick links
                            Quantitative Aptitude
                                    
                                    Verbal (English)
                                    
                                    Reasoning
                                    
                                Programming
                                    
                                    Interview
                                    
                                     Placement Papers