Monday, 18 March 2013

#define int arr1[max]


    #define max 5
    #define int arr1[max]
    main()
    {
    typedef char arr2[max];
    arr1 list={0,1,2,3,4};
    arr2 name="name";
    printf("%d %s",list[0],name);
    }
Answer:
Compiler error (in the line arr1 list = {0,1,2,3,4})
Explanation:
arr2 is declared of type array of size 5 of characters. So it can be used to declare the variable name of the type arr2. But it is not the case of arr1. Hence an error.
Rule of Thumb:
#defines are used for textual replacement whereas typedefs are used for declaring new types.

Blog Author: Vijay Kumar

Go to: Java Aptitude


if( (y%4==0 && y%100 != 0) || y%100 == 0 )


main()
    {
    int y;
    scanf("%d",&y); // input given is 2000
    if( (y%4==0 && y%100 != 0) || y%100 == 0 )
         printf("%d is a leap year");
    else
         printf("%d is not a leap year");
    }
Answer:
2000 is a leap year
Explanation:
An ordinary program to check if leap year or not

Blog Author: Vijay Kumar

Go to: Java Aptitude


printf("%d==1 is ""%s",k,k==1?"TRUE":"FALSE");


main()
    {
    int k=1;
    printf("%d==1 is ""%s",k,k==1?"TRUE":"FALSE");
    }
Answer:
1==1 is TRUE
Explanation:
When two strings are placed together (or separated by white-space) they are concatenated (this is called as "stringization" operation). So the string is as if it is given as "%d==1 is %s". The conditional operator( ?: ) evaluates to "TRUE".

Blog Author: Vijay Kumar

Go to: Java Aptitude


#define FALSE -1 #define TRUE 1 #define NULL 0


#define FALSE -1
    #define TRUE   1
    #define NULL   0
    main() {
       if(NULL)
         puts("NULL");
       else if(FALSE)
         puts("TRUE");
       else
         puts("FALSE");
       }
Answer:
TRUE
Explanation:
The input program to the compiler after processing by the preprocessor is,
    main(){
         if(0)
             puts("NULL");
    else if(-1)
             puts("TRUE");
    else
             puts("FALSE");
         }
Preprocessor doesn't replace the values given inside the double quotes. The check by if condition is boolean value false so it goes to else. In second if -1 is boolean value true hence "TRUE" is printed.

Blog Author: Vijay Kumar

Go to: Java Aptitude


char far *farther,*farthest;


void main()
{
 char far *farther,*farthest;
 
 printf("%d..%d",sizeof(farther),sizeof(farthest));
  
 }
Answer:
4..2 
Explanation:
    the second pointer is of char type and not a far pointer.
Some explanation first:
far pointers are outdated concepts from C, and are actually
compiler extentions, so you might get compiler errors trying
to use far pointers on some compilers.
In the program above, 
farther's type - FAR pointer to char
farthest's type - near pointer to char
now, the difference in size of those stems from the fact
that far pointers consist of the segment and offset
together, while near pointers just have the offset. 
Near pointers thus have size of 2 (just the offset), while
far pointers - size of 4 bytes.

Blog Author: Vijay Kumar
Go to: Java Aptitude