没人答..还是我来吧,我不是什么大神
太多了我们慢慢来:
int x= str.charAt(i)-'0'; 因为右边用了算术运算符 - ,所以右边就是int类型的了,我们假设str = "6579" i=0
这句话的性质就是 int x = '6'-'0'; 右边是两个字符在相减,做运算的实际是他们的阿斯克码 也就是int x=54 - 48
它下面的if,else究竟有什么用处?
看注释啊..写的很清楚了 //判断是否超出范围,对符合要求数据添加进缓冲区
也就是看x 是否在0~9之间
它还不能防止我输入负数啊?我照样可以输入负数,
他是一个字符一个字符检验的,没写判断是否是正负数的语句 当然防止不了
另外为什么char类型的返回值 -‘0’就变int形了???
参照第一个回答
int x= str.charAt(i),这句话也没有提示错误也就是这样直接可以强转?不应该是:char x=str.charAt(i)吗?
这个我不太确定,如果有明白的人你可以问一下,我想的有可能是错的:
一个类型转换成另一种类型,实际上只是改变了显示形式,每个类型都是按照自己的码表显示对应的内容,比如上面提到的 54 在int中对应的内容就是54 所以int i=54 的话 i就等于54 如果char c=54 的话 c就等于'6' 如果两个类型码表的大小不一样 大的不能转小的 小的可以转大的,(实际上char的码表范围比int 小) 你也许会想既然char比int 小为什么 char c = 54;还可以, 其实是因为54是已知数,而且是常量,也就是已经知道是要找char 表中的54对应的内容你如果写成超过表的数如99999999 或者变成变化范围比他大的变量如: int i=54; char c = i; 就都不行了,打这么些字累死了....:L |