C Programming and Technical

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

Read Solution (Total 0)

C Other Question

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
output?
#define clrscr() 100
main()
{
clrscr();
printf("%dn",clrscr());
}

A. 100

Explanation: Preprocessor executes as a seperate pass before the execution of the compiler.
So textual replacement of clrscr() to 100 occurs. The input program to compiler looks like this :
main()
{
100;
printf("%dn",100