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 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网