C语言:int r,char *s,那么r=r*10+*s-'0'代表什么 c语言char *s,int*t是什么意思
\u5728\u7ebf\u6025\u7b49\uff0cc\u8bed\u8a00\uff0c\u6c42\u5927\u4f6c\u7ed9\u4e2a\u4ee3\u7801#include
int fun(char *s)
{
int r=0;
while(*s)
{
r=r*10+*s-'0';
s++;
}
return r;
}
int main()
{
char s[30];
scanf("%s",s);
printf("%d\n", fun(s));
return 0;
}
\u5b9a\u4e49\u6307\u5411\u5b57\u7b26\u548c\u6307\u5411int\u578b\u7684\u6307\u9488\u53d8\u91cfs\u548ct\u3002
*s为一个字符减去‘0’就是相对应的数字:比如*s=‘4’则*s的内容为字符4而不是数字4,*s-‘0’的结果就是数字4了这样r=r*10+*s-'0'表示的是以r为十位s字符表示的数字为个个位的两位数
具体代表什么不知道。
就是 10倍的r 加上 s指向的字符 减去 ‘0’
所以就出现了楼上的解答,例如你 *s ='9'
那么*s-'0'就是数字的9
这一步应该是字符型数字 往int型数字的转换
将数据通过r*10+*s后转换为整型数据。
扩展阅读:javachar强制转换int ... char转换成int方法 ... c语言char改成int ... c语言中char与int区别 ... c语言char强制转int ... char字符转int ... char型数字转为int ... int型怎么转成char ... c怎么把int转为char ...