如何从c程序中的字符数据类型中检索数值

时间:2015-11-30 18:07:52

标签: c

我想从字符类型变量中检索数值。

char x = '10';
int y = 10;
printf("x + y = %d",(int)x+y);

我希望结果是20。

5 个答案:

答案 0 :(得分:3)

printf("x + y = %d",(int)x+y);

char转换为int并不会将其转换为数字,而是为您提供与其所代表的字符相对应的整数值(通常是ASCII或兼容的字符,但是C标准没有指定)。在这里你使用multi character literal(通常用单引号括起来的任何东西应该只是一个字符),更糟糕的是;这也是定义的实现。如果您想存储多个数字,则需要一个字符串:

const char* x = "10"

然后,您可以使用atoistrtol将其转换为整数。 atoi更易于使用,但无法检查字符串是否包含有效数字。

示例:

const char* x = "10"; int y = 10;
printf("x + y = %d", atoi(x) + y);

答案 1 :(得分:0)

你可以这样做:

char x[] = "10"; int y = 10;
printf("x + y = %d",atoi(x)+y);

答案 2 :(得分:0)

如果你有一个C库,使用atoi(char *x),其次字符不能容纳2个字符,因为你需要一个数组或指针。这是您可能需要的代码:

int main(){
        char *c = "10";
        int i = atoi(c);
        int j = 10;
        printf("i + j=%d",(i + j));
}

答案 3 :(得分:0)

使用以下代码..........

#include<conio.h>
#include<stdio.h>
void main()
{
    char x=10;
    int y=10;
    clrscr();

    printf("%d",(x+y));
    getch();
}

答案 4 :(得分:0)

仅适用于0到9 ..

if (c >= '0' && c <= '9') {
    int v = c - '0';
    // safely use v
}