下面是一个C程序,它希望使用按位运算将整数乘以5。但是,当我运行此程序时,它会产生意外的输出。我知道有些东西我搞砸了,我看不到。关于这个家伙和女孩的任何帮助?
#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;
}
答案 0 :(得分:4)
这是&#34;运算符优先级&#34;:&#34;&lt;&lt;&#34;优先级低于&#34; +&#34; - 所以您的代码实际计算a << (2 + a)
,而它应该是(a << 2) + a
。后者是修复。