비트 연산을 사용하여 정수를 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;
'의 ANS = (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 –
오, 고마워요. –