What is the meaning of NULL?
Answer: NULL is a macro
constant which has been defined in several header files such as stdio.h,
alloc.h, mem.h, stddef.h and stdlib.h as
#define
NULL 0
Example 1: What is the output of following c program?
#include
"stdio.h"
int
main()`{
if(!NULL)
printf("I
know preprocessor");
else
printf("I
don't know preprocessor");
}
Output:
I know preprocessor
Explanation:
!NULL = !0 = 1, i.e. any non-zero number means true.
Example 2: What is the
output of following c program?
#include
"stdio.h"
int
main() {
int
i;
static
int count;
for(i=NULL;i<=5;)
{
count++;
i+=2;
}
printf("%d",count);
}
Output:
3
What is the output if you execute
following c code?
#include<stdio.h>
int
main() {
int
i;
for(i=0;i<5;i++)
{
int
i=10;
printf("
%d",i);
i++;
}
return
0;
}
Output:
10 10 10 10 10
Explanation:
The default storage class of local variable is auto. Scope of auto variables
are block in which it has been declared, i.e. they are dead out of the scope.
So variable i which has been declared inside “for” loop has scope only within
it and after each iteration, variable i is dead and re-initialized.
Note:
If we have declared two variables of same name but different scope then local
variable will have higher priority.
What is the output if you execute
following c code?
#include<stdio.h>
int
main() {
int
arr[3] = {10,20,30};
int
x=0;
x
= ++arr[++x] + ++x + arr[--x];
printf("%d
",x);
return
0;
}
Output:
44
Explanation:
=
++arr[++x] + ++x + arr[--x] //x =
0 + 1
=
++arr[1] + ++x + arr[--x] //x =
1 + 1
=
++arr[++x] + 2 + arr[--x] //x = 2
- 1
=
++arr[1] + 2 + arr[1] //arr[1] = 20+1
=
arr[1] + 1 + arr[1] //arr[1] = 21
=
21 + 2 + 21
=
44
What is the output if you execute
following c program?
#include<stdio.h>
int
main() {
int
a[]={10,20,30,40};
int
i=3,x;
x=1*a[--i]+2*a[--i]+3*a[--i];
printf("%d",x);
return
0;
}
Output:
90 or 100 (depends on compiler)
Explanation:
=
1 * a[--i] + 2 * a[--i] + 3 * a[--i] //i = 3 - 2
=
1 * a[--i] + 2 * a[--i] + 3 * a[--i] //i = 2 - 1
=
1 * a[1] + 2 * a[1] + 3 * a[--i] //i = 1 - 1
=
1 * a[1] + 2 * a[1] + 3 * a[0]
=
1 * 20 + 2 * 20 + 3 * 10
=
20 + 40 + 30
=
90
What is the output if you execute
following c code?
#include<stdio.h>
int
f(int);
int
main() {
int
i=3, val;
val=sizeof
(f(i)+ +f(i=1)+ +f(i-1));
printf("%d
%d",val,i);
return
0;
}
int
f(int num) {
return
num*5;
}
Output:
4 3
Explanation:
Any expression inside “sizeof” operator never changes the value of the any
variable. Thus the value of variable i will remain 3. After the evaluation of
expression inside “sizeof” operator, we will get an integer value. So the value
of variable val will be size of “int” data type.
Note:
Size of “int” in Linux gcc complier is four byte.
What is the output if you execute
following c code?
#include<stdio.h>
int
main() {
int
x, a=3;
x=+
+a+ + +a+ + +5;
printf("%d %d",x,a);
return
0;
}
Output:
11 3
Explanation:
Consider this expression + +a
Here
both + are Unary plus operation. So
=
+ +a+ + +a+ + +5;
=
+ +3+ + +3+ + 5
=
3+ 3+ 5
=
11
Note:
Increment operator ++ cannot have space between two plus symbol.
What is the output if you execute
following c code?
#include<stdio.h>
int
main() {
int
num, a=15;
num=-
- - -a--;
printf("%d %d",num,a);
return
0;
}
Output:
15 14
What is the output if you execute
following c code?
#include<stdio.h>
int
sq(int);
int
main() {
int
a=1, x;
x=sq(++a)+sq(a++)+sq(a++);
printf("%d",x);
return
0;
}
int
sq(int num) {
return
num*num;
}
Output:
17
Explanation:
=
sq(++a) + sq(a++) + sq(a++) //a = 1 + 1
=
sq(2) + sq(2) + sq(a++) //a = 2
+ 1
=
sq(2) + sq(2) + sq(3) //a =
3 + 1
=
4 + 4 + 9
=
17
Note:
Pre-increment first increment, then assign while post increment operator first
assign then increment.
What will be output if you will execute
following c code?
#include<stdio.h>
int
main() {
printf("%c",*"abcde");
return
0;
}
Output:
a
Explanation:
String constant "abcde" returns memory address of first character of
the string constant. *"abcde" returns the first character of string
constant.
How does increment and decrement
operators work in C programming?
Answer: Increment and
decrement operators are used to increase and decrease the value of the variable
by one in C programs.
Increment
operator: ++i; i++;
Decrement
operator: --i; i--;
Example 1: In this program, value of “i” is incremented one by
one from 1 up to 9 using “i++” operator.
#include
<stdio.h>
int
main() {
int
i=1;
while(i<10)
{
printf("%d
",i);
i++;
}}
Output:
1 2 3 4 5 6 7 8 9
Example 2: In this program, value of “i” is decremented one by
one from 20 up to 11 using “i--” operator.
#include
<stdio.h>
int
main() {
int
i=20;
while(i>10)
{
printf("%d
",i);
i--;
}}
Output:
20 19 18 17 16 15 14 13 12 11
Difference between pre and post increment and
decrement operators:
Pre-increment
|
++i
|
value of i is
incremented before assigning it to variable i.
|
Post–increment
|
i++
|
value of i is incremented
after assigning it to variable i.
|
Pre-decrement
|
--i
|
value of i is
decremented before assigning it to variable i.
|
Post-decrement
|
i--
|
value of i is decremented
after assigning it to variable i.
|
Example 3:
#include
<stdio.h>
int
main() {
int
i=0;
while(++i
< 5 ) {
printf("%d
",i);
}
return
0;
}
Output:
1 2 3 4
Explanation:
In above program, value of “i” is incremented from 0 to 1 using pre-increment
operator. This incremented value “1” is compared with 5 in while expression.
Then, this incremented value “1” is assigned to the variable “i”. These 3 steps
are continued until while expression becomes false and output is displayed as
“1 2 3 4”.
Example 4:
#include
<stdio.h>
int
main() {
int
i=0;
while(i++
< 5 ) {
printf("%d
",i);
}
return
0;
}
Output:
1 2 3 4 5
Explanation:
In this program, value of i “0” is compared with 5 in while expression. Then,
value of “i” is incremented from 0 to 1 using post-increment operator. Then,
this incremented value “1” is assigned to the variable “i”. These 3 steps are
continued until while expression becomes false and output is displayed as “1 2
3 4 5”.
Example 5:
#include
<stdio.h>
int
main() {
int
i=10;
while(--i
> 5 ) {
printf("%d
",i);
}
return
0;
}
Output:
9 8 7 6
Explanation:
In above program, value of “i” is decremented from 10 to 9 using pre-decrement
operator. This decremented value “9” is compared with 5 in while expression.
Then, this decremented value “9” is assigned to the variable “i”. These 3 steps
are continued until while expression becomes false and output is displayed as
“9 8 7 6”.
Example 6:
#include
<stdio.h>
int
main() {
int
i=10;
while(i--
> 5 ) {
printf("%d
",i);
}
return
0;
}
Output:
9 8 7 6 5
Explanation:
In this program, value of i “10” is compared with 5 in while expression. Then,
value of “i” is decremented from 10 to 9 using post-decrement operator. Then,
this decremented value “9” is assigned to the variable “i”. These 3 steps are
continued until while expression becomes false and output is displayed as “9 8
7 6 5”.