Cracked it...i guess precedence of + is more than << 
so 
use t=(a<<2)+a;

I checked, its giving proper output now !!!

On Friday, June 8, 2012 5:46:09 AM UTC+5:30, algo lover 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 <stdio.h>
>   #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 view this discussion on the web visit 
https://groups.google.com/d/msg/algogeeks/-/7CNEyeGuUzEJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to