ビット単位の演算を使用して整数に5を掛けようとしています。しかし、私のコードには私が特定できないバグがあるようです。 はここに私のコードビット単位の演算子を使用して整数に5を掛ける
#include <stdio.h>
#define print_integer(exp) printf("%s : %d\n", #exp, (exp))
int multiply(int num) {
int ans;
ans = num << 2 + num;
return ans;
}
int main() {
int a = 1, b = 2, c = 3;
print_integer(multiply(a));
print_integer(multiply(b));
print_integer(multiply(c));
return 0;
}
編集です: - バグが並んでans = num << 2 + num;
'アンス=(NUM << 2)+ NUM;' https://en.wikipedia.org/wiki/Operators_in_C_and_C% 2B%2B#Operator_precedence – wildplasser
...原因 '+'が '<<'よりも優先されます。見て、https://msdn.microsoft.com/en-us/library/aa691323(v=vs.71).aspx –
ああありがとう、それは働いた。 –