Re: [algogeeks] wrong output of C program

2012-06-07 Thread Navin Kumar
one left shift is equivalent to multiplying with 2.Two left is equivalent
to multiplying with 2^2. and so on. so i left shift means multiplying with
2^i.

In your program you did left shift with 2.so it is equivalent to
multiplying with 4. so when input is 1 function will return 4*1+1=5. when
input is 2..output is 2*4+2=10.For 3 o/p is 3*4+3=15

On Fri, Jun 8, 2012 at 5:46 AM, Mad Coder  wrote:

> The following is a simple C program which tries to multiply an integer by
> 5 using the bitwise operations. But it doesn't do so. Explain the reason
> for the wrong behavior of the program.
>
>   #include 
>   #define PrintInt(expr) printf("%s : %d\n",#expr,(expr))
>   *int* FiveTimes(*int* a)
>   {
>   *int* t;
>
>   t *=* a*<<*2 *+* a;
>
>   *return* t;
>   }
>
>   *int* main()
>   {
>   *int* a *=* 1, b *=* 2,c *=* 3;
>
>   PrintInt(FiveTimes(a));
>   PrintInt(FiveTimes(b));
>
>   PrintInt(FiveTimes(c));
>   *return* 0;
>   }
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.



Re: [algogeeks] wrong output of C program

2012-06-07 Thread sengar.mahi
Good Question ,eagerly waiting for some good explanation to this one !!!

On Fri, Jun 8, 2012 at 5:46 AM, Mad Coder  wrote:

> The following is a simple C program which tries to multiply an integer by
> 5 using the bitwise operations. But it doesn't do so. Explain the reason
> for the wrong behavior of the program.
>
>   #include 
>   #define PrintInt(expr) printf("%s : %d\n",#expr,(expr))
>   *int* FiveTimes(*int* a)
>   {
>   *int* t;
>
>   t *=* a*<<*2 *+* a;
>
>   *return* t;
>   }
>
>   *int* main()
>   {
>   *int* a *=* 1, b *=* 2,c *=* 3;
>
>   PrintInt(FiveTimes(a));
>   PrintInt(FiveTimes(b));
>
>   PrintInt(FiveTimes(c));
>   *return* 0;
>   }
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.



[algogeeks] wrong output of C program

2012-06-07 Thread Mad Coder
The following is a simple C program which tries to multiply an integer by 5
using the bitwise operations. But it doesn't do so. Explain the reason for
the wrong behavior of the program.

  #include 
  #define PrintInt(expr) printf("%s : %d\n",#expr,(expr))
  *int* FiveTimes(*int* a)
  {
  *int* t;
  t *=* a*<<*2 *+* a;
  *return* t;
  }

  *int* main()
  {
  *int* a *=* 1, b *=* 2,c *=* 3;
  PrintInt(FiveTimes(a));
  PrintInt(FiveTimes(b));
  PrintInt(FiveTimes(c));
  *return* 0;
  }

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.