90)

i is an unsigned integer. It is compared with a signed value. Since the both types doesn't match, signed is promoted to unsigned value. The unsigned equivalent of -2 is a huge value so condition becomes false and control comes out of the loop.

91) In the following pgm add a stmt in the function fun such that the address of 'a' gets stored in 'j'.

*k = &a

The argument of the function is a pointer to a pointer.

92) What are the following notations of defining functions known as?

i. ANSI C notation

ii. Kernighan & Ritche notation

93)

300

The pointer points to % since it is incremented twice and again decremented by 2, it points to '%d\n' and 300 is printed.

94)

The base address is modified only in function and as a result a points to 'b'

then after incrementing to 'c' so bc will be printed.

95)

The value if process is 0 !

The function 'process' has 3 parameters - 1, a pointer to another function 2 and 3, integers. When this function is invoked from main, the following substitutions for formal parameters take place: func for pf, 3 for val1 and 6 for val2. This function returns the result of the operation performed by the function 'func'. The function func has two integer parameters. The formal parameters are substituted as 3 for a and 6 for b. since 3 is not equal to 6, a==b returns 0. therefore the function returns 0 which in turn is returned by the function 'process'.

main(){ unsigned int i; for(i=1;i>-2;i--) printf("c aptitude"); }

**Explanation:**i is an unsigned integer. It is compared with a signed value. Since the both types doesn't match, signed is promoted to unsigned value. The unsigned equivalent of -2 is a huge value so condition becomes false and control comes out of the loop.

91) In the following pgm add a stmt in the function fun such that the address of 'a' gets stored in 'j'.

main(){ int * j; void fun(int **); fun(&j); } void fun(int **k) { int a =0; /* add a stmt here*/ }

*Answer:**k = &a

**Explanation:**The argument of the function is a pointer to a pointer.

92) What are the following notations of defining functions known as?

i. int abc(int a,float b) { /* some code */ }

ii. int abc(a,b) int a; float b; { /* some code*/ }

*Answer:*i. ANSI C notation

ii. Kernighan & Ritche notation

93)

main() { char *p; p="%d\n"; p++; p++; printf(p-2,300); }

*Answer:*300

**Explanation:**The pointer points to % since it is incremented twice and again decremented by 2, it points to '%d\n' and 300 is printed.

94)

main(){ char a[100]; a[0]='a';a[1]]='b';a[2]='c';a[4]='d'; abc(a); } abc(char a[]){ a++; printf("%c",*a); a++; printf("%c",*a); }

**Explanation:**The base address is modified only in function and as a result a points to 'b'

then after incrementing to 'c' so bc will be printed.

95)

func(a,b) int a,b; { return( a= (a==b) ); } main() { int process(),func(); printf("The value of process is %d !\n ",process(func,3,6)); } process(pf,val1,val2) int (*pf) (); int val1,val2; { return((*pf) (val1,val2)); }

*Answer:*The value if process is 0 !

**Explanation:**The function 'process' has 3 parameters - 1, a pointer to another function 2 and 3, integers. When this function is invoked from main, the following substitutions for formal parameters take place: func for pf, 3 for val1 and 6 for val2. This function returns the result of the operation performed by the function 'func'. The function func has two integer parameters. The formal parameters are substituted as 3 for a and 6 for b. since 3 is not equal to 6, a==b returns 0. therefore the function returns 0 which in turn is returned by the function 'process'.