我是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
问题在于我的阵列?哪里?如果可以,请帮助我。
答案 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的数值。