簡體   English   中英

為什么我的戰俘方法不起作用?

[英]Why my pow method isn't working?

我是C ++的新手,我有一個簡單的問題。 我必須將數字(1011)更改為十進制結果。 包括Cmath。 我嘗試使用pow方法,但請查看我的輸出:

碼:

char *b = "1011";
int maxPow = 3;
for (int i = 0; i < 3; ++i) {
    cout << b[i] * pow(b[i], (maxPow - i) / 1.0) << endl;
}

輸出:

5.7648e+006
110592
2401

我嘗試使它像這樣:

result = 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0

問題出在我的陣列上嗎? 哪里? 如果可以,請你幫助我。

因此,您遇到的問題是,您正在遍歷ascii值並乘以ascii值。 嘗試類似int digit = b[i]-'0'; 然后在使用b [i]的地方加上變量digit。

減去“ 0” ...表示您正在從給定字符中減去ascii值零。 因此,從'0'減去ascii值'0'會得到數值0,或從ascii'1'減去ascii'0'會得到數值1。

看看-http: //www.asciitable.com/index/asciifull.gif以獲得更好的理解。

您可以做的另一個小演示是cout b [i],您將看到打印的值48或49,因為它們分別是ascii 0和ascii 1的數值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM