繁体   English   中英

将字符转换为C中的整数的问题

[英]Issue with turning a character into an integer in C

我遇到将字符变量转换为整数变量的问题。 这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
    char string[] = "A2";
    char letter = string[0];
    char number = string[1];
    char numbers[] = "12345678";
    char letters[] = "ABCDEFGH";
    int row;
    int column;

    for(int i = 0; i < 8; i++){
        if(number == numbers[i]){
            row = number;
        }
    }
}

当我尝试将变量行转换为变量数的整数值时,而不是2我得到50.到目前为止的目标是将变量行转换为字符变量号的准确值,在本例中为2我有点困惑为什么变量行是50而不是2.可以任何人向我解释为什么它没有准确转换?

'2' != 2 ASCII中的“2”字符为十进制50(十六进制为0x32)。 http://www.asciitable.com/

如果你确定它们真的是数字,你可以使用(numbers[i] - '0')来获得你正在寻找的价值。

在你的情况下,2是一个字符,该字符的值是50,因为这是表示ASCII中字符2的字节值的十进制版本。 请记住,c是非常低级别,字符与任何其他值基本相同:字节序列。 就像字母表示为字节一样,它们在我们的基本10系统中的值的字符表示也是如此。 似乎2应该用值2表示,但事实并非如此。

如果使用atoi函数,它将查看字符串并计算字符串中字符表示的十进制值。

但是,如果您只将一个字符转换为它所代表的十进制值,则可以采用捷径。 从值“0”中减去该数字。 虽然数字不是由我们人类所拥有的基数10值表示的,但它们按ASCII码顺序排列的。 因为在C中,字符只是字节值,数字字符0-9和0之间的差异是字符的值。

char c = '2'; 
int i = c - '0';

如果你理解为什么那会起作用,你就会得到我所说的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM