C Program
C Program
C Program
EXPLANATION
Output: 10
Explanation:
Here variable x is extern type. So it will search the
definition of variable x. which is present at the end
of the code. So value of variable x =8
There are two do-while loops in the above code. AS
we know do-while executes at least one time even that
condition is false. So program control will reach
at printf statement at it will print octal number 10
which is equal to decimal number 8.
Note: %o is used to print the number in octal format.
In inner do- while loop while condition is ! -2 = 0
In C zero means false. Hence program control will
come out of the inner do-while loop.
In outer dowhile loop while condition is 0. That is again false.
Hide
(2)
What will be output of following c code?
#include<stdio.h>
int main(){
int i=2,j=2;
while(i+1?--i:j++)
printf("%d",i);
return 0;
}
EXPLANATION
Output: 1
Explanation:
Consider the while loop condition: i + 1 ? -- i : ++j
In first iteration:
i + 1 = 3 (True)
So ternary operator will return -i i.e. 1
In c 1 means true so while condition is true. Hence
printf statement will print 1
In second iteration:
i+ 1 = 2 (True)
So ternary operator will return -i i.e. 0
In c zero means false so while condition is false.
Hence program control will come out of the while
loop.
Hide
(3)
What will be output of following c code?
#include<stdio.h>
int main(){
int x=011,i;
for(i=0;i<x;i+=3){
printf("Start ");
continue;
printf("End");
}
return 0;
}
EXPLANATION
Third iteration:
i = 3
i < x i.e. 6 < 9 i.e. if loop condition is true.
Hence printf statement will print: Start
Due to continue keyword program control will come at
the beginning of the for loop and value of variable i
will be:
i += 3
i = i + 3 = 9
fourth iteration:
i = 6
i < x i.e. 9 < 9 i.e. if loop condition is false.
Hence program control will come out of the for loop.
Hide
EXPLANATION
Output: 13
Explanation:
Initial value of variable
i = 2
j = 2
Consider the while condition : --i && j++
In first iteration:
--i && j++
= 1 && 2 //In c any non-zero number represents
true.
= 1 (True)
So while loop condition is true. Hence printf
function will print value of i = 1 and j = 3 (Due
to post increment operator)
In second iteration:
--i && j++
= 0 && 3 //In c zero represents false
= 0 //False
So while loop condition is false. Hence program
control will come out of the for loop.
Hide
#include<stdio.h>
int main(){
static int i;
for(++i;++i;++i) {
printf("%d ",i);
if(i==4) break;
}
return 0;
}
EXPLANATION
Output: 24
Explanation:
Default value of static int variable in c is zero.
So, initial value of variable i = 0
First iteration:
For loop starts value: ++i i.e. i = 0 + 1 = 1
For loop condition: ++i i.e. i = 1 + 1 = 2 i.e. loop
condition is true. Hence printf statement will print
2
Loop incrimination: ++I i.e. i = 2 + 1 =3
Second iteration:
For loop condition: ++i i.e. i = 3 + 1 = 4 i.e. loop
condition is true. Hence printf statement will print
4.
Since is equal to for so if condition is also true.
But due to break keyword program control will come
out of the for loop.
Hide
EXPLANATION
Output: -1
Explanation:
Initial value of variable i is 1.
First iteration:
For loop initial value: i = 0
For loop condition: i = -1 . Since -1 is non- zero
number. So loop condition true. Hence printf function
will print value of variable i i.e. -1
Since variable i is not equal to 1. So, if condition
is true. Due to break keyword program control will
come out of the for loop.
Hide
EXPLANATION
Hide
int main(){
for(r();r();r()) {
printf("%d ",r());
}
return 0;
}
int r(){
int static num=7;
return num--;
}
EXPLANATION
Output: 5 2
Explanation:
First iteration:
Loop initial value: r() = 7
Loop condition: r() = 6
Since condition is true so printf function will print
r() i.e. 5
Loop incrimination: r() = 4
Second iteration:
Loop condition: r() = 3
Since condition is true so printf function will print
r() i.e. 2
Loop incrimination: r() = 1
Third iteration:
Loop condition: r() = 0
Since condition is false so program control will come
out of the for loop.
Hide
#define call(x) #x
int main(){
do{
int i=15,j=3;
printf("%d",p(i-+,+j));
}
while(*(call(625)+3));
return 0;
}
EXPLANATION
Output: 11
Explanation:
First iteration:
p(i-+,+j)
=i-++j
// a##b
=i - ++j
=15 4
= 11
While condition is : *(call(625)+ 3)
= *(625 + 3)
Note: # preprocessor operator convert the operand
into the string.
=*(It will return the memory address of character
\0)
= \0
= 0 //ASCII value of character null character
Since loop condition is false so program control will
come out of the for loop.
Hide
(10)
#include<stdio.h>
int main(){
int i;
for(i=0;i<=5;i++);
printf("%d",i)
return 0;
}
EXPLANATION
Output: 6
Explanation:
It possible for loop without any body.
Hide
EXPLANATION
Output: 40
Explanation:
Initial value of variable i is 40
First iteration:
Hide
EXPLANATION
Output: 0
Explanation:
In c three continuous dot represents variable number
of arguments.
p is the pointer to the function _x_
First iteration of for loop:
Initial value: Nothing // In c it is optional
Loop condition: (*p)(0,1,2,3,4)
= *(&_x_)(0,1,2,3,4) // p = &_x_
= _x_(0,1,2,3,4) //* and & always cancel to each other
= return i+++a
= return i+ ++a
= return -1 + 1
= 0
Since condition is false. But printf function will
print 0. It is bug of c language.
Hide
EXPLANATION
Output: 1 1 1 1 1 1
For loop will execute six times.
Note: continue keyword in do-while loop bring the
program its while condition (while(0)) which is
always false.
Hide
EXPLANATION
Hide
printf("%x ",x);
}
return 0;
EXPLANATION
Output: c++0 1 2 3
Explanation:
First printf function will print: c++ and return 3 to
variable i.
For loop will execute three time and printf function
will print 0, 1, 2 respectively.