2014-04-05 35 views
-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; 
} 
+1

你有沒有想過寫單元測試? –

回答

0

注:

  1. 間隔0 < x < 2000可能意味着你必須遍歷0年和2000年

  2. 從你的代碼之間的每一個整數,看來你想y=11*x+7*x/16而不是y=11*x+7/16*x在你的問題說明。

  3. 你應該在每次移位操作加括號,以確保它不被加法運算之前。

  4. 您可以依次每次迭代之後添加的打印輸出,以確保其正常工作。

見下面的示例代碼:

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); 
    } 
}