pizg 发表于 2012-12-6 20:59:43

為什麼是 6, 而不是 7 ?

本帖最后由 pizg 于 2012-12-20 13:20 编辑

請問各位前輩,
下面代碼print出來的結果為什麼是 6, 而不是 7 ?

int B[]={1,1,1,0,0,0,0,0,0,0};

void setup() {
Serial.begin(9600);
int n = sizeof(B) / 2;
int BT = 0;
for(int i=0;i < n; i++) {
    BT = BT + B * pow(2, i);
}
Serial.println(BT);
}

void loop() {
}

yyy_zc 发表于 2012-12-7 12:57:22

void setup() {
Serial.begin(9600);
int n = sizeof(B) / 2;
int BT = 0;
for(int i=0;i < n; i++) {
    BT = BT + B * pow(2, i);
    Serial.println(BT);//逐个打印出来看看
}
Serial.println(BT);
}

pizg 发表于 2012-12-7 17:24:40

yyy_zc 发表于 2012-12-7 12:57 static/image/common/back.gif
void setup() {
Serial.begin(9600);
int n = sizeof(B) / 2;


感謝你的回覆.

我也逐個打印看過了,
但它就是6.

histamine 发表于 2012-12-7 18:06:46

本帖最后由 histamine 于 2012-12-7 18:12 编辑

搞错了 先编辑掉

jack4904 发表于 2012-12-15 21:51:12

pow的return是float, 但是B是int
把int B;改成float B;就好了
測試過沒問題
想要int 最後再加上(int)做轉換就好了

pizg 发表于 2012-12-19 00:07:08

本帖最后由 pizg 于 2012-12-19 00:40 编辑

jack4904 发表于 2012-12-15 21:51 static/image/common/back.gif
pow的return是float, 但是B是int
把int B;改成float B;就好了
測試過沒問題


感謝您的回覆.
您可否把測試通過的代碼貼上來,
因為我試了很久還是不會修改,
感謝.


我後來自己寫了一個 pow function 問題就解決了,
為了報答您, 我把代碼貼上與您分享:

int B[]={1,1,1,0,0,0,0,0,0,0};

int myPow(int a, int b) {
   int c;
   for(int i=0; i<=b;i++) {
   if (i == 0)
       c = 1;
   else if (i == 1)
       c = a;
   else
       c *= a;
   }   
   return c;
}

void setup() {
   Serial.begin(9600);
   int n = sizeof(B) / 2;
   int BT = 0;
   for(int i=0;i < n; i++) {
   BT = BT + B * myPow(2, i);
   }
Serial.println(BT);   
}

void loop() { }

jack4904 发表于 2012-12-19 21:02:45

int B[]={1,1,1,0,0,0,0,0,0,0};

void setup() {
Serial.begin(9600);
int n = sizeof(B) / 2;
float BT = 0;   //改這行
for(int i=0;i < n; i++) {
    BT = BT + B * pow(2, i);
}
Serial.println(BT);
}

void loop() {
}
页: [1]
查看完整版本: 為什麼是 6, 而不是 7 ?