Saturday, 1 September 2012

C Program Snippet Samples-1


  1. void main()
    {
     int  const * p=5;
     printf("%d",++(*p));
    }
    Answer:
    Compiler error: Cannot modify a constant value.
    Explanation:
    p is a pointer to a "constant integer". But we tried to change the value of the "constant integer".
  2. main()
    {
     char s[ ]="man";
     int i;
     for(i=0;s[ i ];i++)
     printf("\n%c%c%c%c",s[ i ],*(s+i),*(i+s),i[s]);
    }
    Answer:
    mmmm
    aaaa
    nnnn
    Explanation:
    s[i], *(i+s), *(s+i), i[s] are all different ways of expressing the same idea. Generally array name is the base address for that array. Here s is the base address. i is the index number/displacement from the base address. So, indirecting it with * is same as s[i]. i[s] may be surprising. But in the case of C it is same as s[i].
  3. main()
    {
     float me = 1.1;
     double you = 1.1;
     if(me==you)
    printf("I love U");
    else
      printf("I hate U");
    }
    Answer:
    I hate U
    Explanation:
    For floating point numbers (float, double, long double) the values cannot be predicted exactly. Depending on the number of bytes, the precession with of the value represented varies. Float takes 4 bytes and long double takes 10 bytes. So float stores 0.9 with less precision than long double.
    Rule of Thumb:
    Never compare or at-least be cautious when using floating point numbers with relational operators (== , >, <, <=, >=,!= ).
    4.main()
     {
     static int var = 5;
     printf("%d ",var--);
     if(var)
      main();
     }
    Answer:
    5 4 3 2 1
    Explanation:
    When static storage class is given, it is initialized once. The change in the value of a static variable is retained even between the function calls. Main is also treated like any other ordinary function, which can be called recursively.
    5.main()
    {
      int c[ ]={2.8,3.4,4,6.7,5};
      int j,*p=c,*q=c;
      for(j=0;j<5;j++) {
      printf(" %d ",*c);
         ++q;   }
      for(j=0;j<5;j++){
    printf(" %d ",*p);
    ++p;   }
    }
    
    Answer:
    2 2 2 2 2 2 3 4 6 5


0 comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...