接题目:
为了提高效率,我们想只使用+、-和<<运算。对于下列K的值,写出执行乘法运算的C表达式,每个表达式中最多使用3个运算。
A. K=17
B. K=- 7
C. K= 60
D. K=-112
开始作答 官方答案(已验证)
#include <stdio.h>
#include <assert.h>
/* K = 17 */
int A(int x) {
return (x << 4) + x;
}
/* K = -7 */
int B(int x) {
return x - (x << 3);
}
/* K = 60 */
int C(int x) {
return (x << 6) - (x << 2);
}
/* K = -112 */
int D(int x) {
return (x << 4) - (x << 7);
}
int main(int argc, char* argv[]) {
int x = 0x87654321;
assert(A(x) == 17 * x);
assert(B(x) == -7 * x);
assert(C(x) == 60 * x);
assert(D(x) == -112 * x);
return 0;
}