我想从字符类型变量中检索数值。
char x = '10';
int y = 10;
printf("x + y = %d",(int)x+y);
我希望结果是20。
答案 0 :(得分:3)
printf("x + y = %d",(int)x+y);
将char
转换为int并不会将其转换为数字,而是为您提供与其所代表的字符相对应的整数值(通常是ASCII或兼容的字符,但是C标准没有指定)。在这里你使用multi character literal(通常用单引号括起来的任何东西应该只是一个字符),更糟糕的是;这也是定义的实现。如果您想存储多个数字,则需要一个字符串:
const char* x = "10"
。
然后,您可以使用atoi
或strtol
将其转换为整数。 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
}