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.