2013-12-08 36 views
-2
char str[]="abcde1fgh"; 
    int i; 
    i=str[5]; 
    return; 

经过这个过程后,整数i必须是1,但它不是。为什么不?从c中的字符串获得一个整数

+1

它不是'1',它是'1'。 – 2013-12-08 18:29:51

+3

字符'1'与编号1不同。 – remus

+0

我将它搜索了一个小时,找不到可以理解的答案。然后,我发现tihs网站,并认为你们可以帮助 – user3080477

回答

2

您的代码不起作用,因为在您的示例中1是一个字符。基于从下面

减去一些字符例如获得的数值,他的评论贾迈勒的解释: 尝试,而不是执行以下操作:

int i = str[5] - '0'; 

这就是为什么它的工作原理str[5]与字符'0'。每个字符的数值可在ASCII表中找到。在这个例子中,我们减去49(对应于'1')减去48(对应于'0'),其等于1

+1

为什么发表相同的答案两次?你可以编辑你的第一个答案。 –

+0

确定它工作非常感谢,你能介意告诉为什么吗? :) – user3080477

+0

@ user3080477:通过减去字符(从'char []')和字符'0'可以得到一个数值。这可以在[ASCII表格](http://www.asciitable.com/)上找到。在这里,这将是49(对应于'1')减48(对应于'0'),这是1. – Jamal