- main(){
int i=-1;
-i;
printf("i = %d, -i = %d
\n",i,-i);
}
Answer:
i = -1, -i = 1
Explanation:
-i is executed and this
execution doesn't affect the value of i. In printf first you just print the
value of i. After that the value of the expression -i = -(-1) is printed.
- main() {
const int i=4;
float j;
j = ++i;
printf("%d %f", i,++j);
}
Answer:
Compiler error
Explanation:
i is a constant. you cannot
change the value of constant
- main(){
int a[2][2][2] = {
{10,2,3,4}, {5,6,7,8} };
int *p,*q;
p=&a[2][2][2];
*q=***a;
printf("%d..%d",*p,*q);
}
Answer:
garbagevalue..1
Explanation:
p=&a[2][2][2] you declare only two 2D arrays. but you are
trying to access the third 2D(which you are not declared) it will print garbage
values. *q=***a starting address of a is assigned integer pointer. now q is
pointing to starting address of a.if you print *q meAnswer:it will print first
element of 3D array.
- main() {
register i=5;
char j[]=
"hello";
printf("%s %d",j,i);
}
Answer:
hello 5
Explanation:
if you declare i as
register compiler will treat it as
ordinary integer and it will take integer value. i value may be stored
either in register or in memory.
- main(){
int i=5,j=6,z;
printf("%d",i+++j);
}
Answer:
11
Explanation:
The expression i+++j is
treated as (i++ + j).
- struct aaa{
struct aaa *prev;
int i;
struct aaa *next;
};
67main(){
struct aaa abc,def,ghi,jkl;
int x=100;
abc.i=0;abc.prev=&jkl;
abc.next=&def;
def.i=1;def.prev=&abc;def.next=&ghi;
ghi.i=2;ghi.prev=&def;
ghi.next=&jkl;
jkl.i=3;jkl.prev=&ghi;jkl.next=&abc;
x=abc.next->next->prev->next->i;
printf("%d",x);
}
Answer:
2
Explanation:
above all statements form a double circular linked list;
abc.next->next->prev->next->i
this one points to
"ghi" node the value of at particular node is 2.
- struct point{
int x;
int y;
};
struct point origin,*pp;
main(){
pp=&origin;
printf("origin
is(%d%d)\n",(*pp).x,(*pp).y);
printf("origin is
(%d%d)\n",pp->x,pp->y);
}
Answer:
origin is(0,0)
origin is(0,0)
Explanation:
pp is a pointer to
structure. we can access the elements of the structure either with arrow mark
or with indirection operator.
Note:
Since structure point is globally declared x & y are
initialized as zeroes
- main(){
int i=_l_abc(10);
printf("%d\n",--i);
}
int _l_abc(int i){
return(i++);
}
Answer:
9
Explanation:
return(i++) it will first
return i and then increments. i.e. 10 will be returned.
- main(){
char *p;
int *q;
long *r;
p=q=r=0;
p++;
q++;
r++;
printf("%p...%p...%p",p,q,r);
}
Answer:
0001...0002...0004
Explanation:
++ operator when applied to pointers increments address
according to their corresponding data-types.
No comments:
Post a Comment