-1
我試圖使換檔操作來計算Y = 11 * X + 7/16 X 0 < X < 2000年我的代碼如下:難道我做正確的換擋操作?此外,什麼是間隔0 < X < 2000是什麼意思? x不必等於一個常量?在一個間隔移位操作?
#include <msp430.h>
int x,y;
void main(void)
{
y=(x<<3+x<<1+x)+(x<<2+x<<1+x)>>4;
}
我試圖使換檔操作來計算Y = 11 * X + 7/16 X 0 < X < 2000年我的代碼如下:難道我做正確的換擋操作?此外,什麼是間隔0 < X < 2000是什麼意思? x不必等於一個常量?在一個間隔移位操作?
#include <msp430.h>
int x,y;
void main(void)
{
y=(x<<3+x<<1+x)+(x<<2+x<<1+x)>>4;
}
注:
間隔0 < x < 2000
可能意味着你必須遍歷0年和2000年
從你的代碼之間的每一個整數,看來你想y=11*x+7*x/16
而不是y=11*x+7/16*x
在你的問題說明。
你應該在每次移位操作加括號,以確保它不被加法運算之前。
您可以依次每次迭代之後添加的打印輸出,以確保其正常工作。
見下面的示例代碼:
void main(void)
{
int x,y;
for (x=1; x<=1999; x++)
{
y = ((x<<3)+(x<<1)+x)+(((x<<2)+(x<<1)+x)>>4);
printf("x=%d y=%d\n",x,y);
}
}
你有沒有想過寫單元測試? –