為什麼是 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() {
} 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);
} 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:12 编辑
搞错了 先编辑掉 pow的return是float, 但是B是int
把int B;改成float B;就好了
測試過沒問題
想要int 最後再加上(int)做轉換就好了 本帖最后由 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() { }
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]