*q=(*p)-'0' 这个减'0'是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/05/06 15:03:29
#include <stdio.h>
#include <string.h>
void main()
{
char c[100],*p=c;
int a[50],*q=a,num=0,i;
gets(c);
for(; *p!='\0'; p++)
if(*p>='0' && *p<='9')
{
*q=(*p)-'0'; /*这句是什么意思呀*/
p++;
while(*p>='0' && *p<='9')
*q=(*q)*10+(*(p++)-'0'); /*这句是什么意思呀*/
num+=1;
q+=1;
}
for(i=0,q=a; i<num; i++,q++)
printf("%d ",*q);
putchar('\n');
printf("一共输入了%d个数字。\n",num); /*原来vc是识别中文的!*/
}
请问'0'是数值还是字符。是字符吗

*q=(*p)-'0'//是将字符的‘0’-‘9’(对应ascii的48-57),转换成数字(int)0-9
*q=(*q)*10+(*(p++)-'0');//是把字符串转换成数字,比如说"123",变成数字123
不知道你是否明白?^_^
'0'是字符,对应ascii中48

同意楼上的意见