c语言怎样把char的值赋给int

新手求指教,c语言怎样把char的值赋给int,比如有char a[] = "1"; int b; 要把a的值赋给b怎么做。
要使b的值为1.

字符'0' 的ASCII 编码是0x30 (0x是十六进制的意思)
字符‘1’ 的ASCII 编码是0x31
其他数字以此类推

也就是说我们看到的字符'1',在内存中实际上是0x31, 跟实际值差了 0x30 也就是十进制 48
所以b = a[0] - '0'; 或者 b = a[0] - 0x30;

最后说一下你char a[] = “1”;这个定义的事实上是一个字串,不是字符。
a这个变量所在的地址内存应该是 0x31, 0x00

声明并初始化char,应该是这样
char a = '1';
然后 b = a - ‘0’; 或者 b = a - 0x30;
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-28
把char强制转化为int 之后在赋值
第2个回答  2013-10-28
int b= Integer.parseInt(a[0]);
第3个回答  2013-10-28
b=a-'0';就行了
第4个回答  2013-10-28
b=a[0]
这样就可以了追问

这样的话打印出的值不是1了。

追答

你要打印是1的话要如下做
b=a[0]-'0';

追问

成功了,能否请问下 -‘0’ 的含义,是把结束符去掉吗?

追答

不是
char数组中装的是1的ascii码
减去‘0’的ascii码正好是1的实际值

追问

那假如char a[] = "111"; 要让b的值是111,不是很麻烦吗

追答

是的,这个时候就用atoi函数了

本回答被提问者采纳
相似回答