C Programming and Technical

output?
#define square(x) x*x
main()
{i
nt i;
i = 64/square(4);
printf("%d",i);
}

Answer: 64

Explanation: the macro call square(4) will substituted by 4*4 so the expression becomes i = 64/4*4 . Since / and * has equal priority the expression will be evaluated as (64/4)*4 i.e. 16*4 = 64

Read Solution (Total 0)

C Other Question

output?
main()
{i
nt i=5;
printf("%d%d%d%d%d%d",i++,i--,++i,--i,i);
}

Answer: 45545

Explanation: The arguments in a function call are pushed into the stack from left to right. The evaluation is by popping out from the stack. And the evaluation is from right to left, hence the result.
output?
main()
{
char *p="hai friends",*p1;
p1=p;
while(*p!='') ++*p++;
printf("%s %s",p,p1);
}

Answer. ibj!gsjfoet

Explanation: ++*p++ will be parse in the given order
_ *p that is value at the location currently pointed by p will be taken
_ ++*p the retrieved value will be incremented
_ when; is encountered the location will be incremented that is p++ will be executed Hence, in
the while loop initial value pointed by p is ‘h’, which is changed to ‘i’ by executing ++*p and
pointer moves to point, ‘a’ which is similarly changed to ‘b’ and so on. Similarly blank space is
converted to ‘!’. Thus, we obtain value in p becomes “ibj!gsjfoet” and since p reaches ‘’ and p1
points to p thus p1doesnot print anything