为什么我的战俘方法不起作用?

时间:2016-04-12 19:01:39

标签: c++

我是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

问题在于我的阵列?哪里?如果可以,请帮助我。

1 个答案:

答案 0 :(得分:2)

因此,您遇到的问题是,您正在循环ascii值并乘以ascii值。尝试类似int digit = b[i]-'0';的内容,然后用可变数字代替b [i]。

减去'0'...表示您从给定字符中减去ascii值为零。因此从'0'中减去'0'的ascii值会得到数值0,或者从ascii'1'中减去ascii'0',给出数值1。

看看 - http://www.asciitable.com/index/asciifull.gif以便更好地理解。

你可以做的另一个小小的演示就是cout b [i],你会看到打印的值48或49,因为它们分别是ascii 0和ascii 1的数值。

相关问题