2017-04-13 71 views
0

我的代码如下:获取字符串的指数

cc_string = "378282246310005" 
for (int i = 0, n = strlen(cc_string); i < (n/2); i++) 
    { 
     index = cc_string[i]; 
     sum += (index * 2); 
     printf("%i\n", sum); 
    } 

,但我的输出总是(加在一起字符串中的每个数字):

102 
212 
324 
424 
536 
636 
736 

代替:

22 
38 
42 
50 
56 
56 
56 
+1

'cc_string'的类型? –

+1

(How)你初始化了'sum'吗? –

+1

'int sum + =(index * 2);'.... sum'开始未初始化....在循环之前声明它,初始化为0,并在循环中使用它。 – LPs

回答

1

问题是您使用ASCII数字作为数字,这是不正确的。

ASCII '1'0x31十六进制或49十进制。

所以,你的第一个循环给你102 = '3'(0x33, 51) * 2

要简单减法“0”解决它的ASCII数字:

index = cc_string[i] - '0'; 

显然,在你的问题expexted输出没有任何意义,使第一sum6没有,如果sum初始化为0

因此预期输出可以是下列加偏移初始值

6 
20 
36 
40 
56 
60 
64 
+1

大概他已经在某处初始化了'sum = 0;'。可能值得在'for'循环初始化中加入':'''好的答案。 –