本帖最后由 风过无痕1989 于 2020-9-5 23:03 编辑
- #include <stdio.h>
- void main()
- {
- char ch[2][5]={"693","825"},*p [2];
- int i,j,s = 0;
- for (i=0;i<2;i++)
- p[i]=ch[i];
- for (i=0;i<2;i++)
- for (j=0;p[i][j]>='0' && p[i][j]<='9';j+=2)
- s = 10 * s + p[i][j] - '0';
- printf("%d\n",s);
- }
复制代码
第8行的循环条件简单不用说了,第9行的循环条件是:0 <= p[ i ][ j ] <= 9,j += 2 是步进2,等价于 j = j + 2
第10行的意思是:s = 10 * s + p[ i ][ j ] - '0' = 10 * s + p[ i ][ j ] - 48 (这里的 p[ i ][ j ] 值与后面的 '0' 都要转换为 ASCII 码来计算,原因是 s 是整型)
于是循环两次的结果如下:
s = 10 * s + p[0][0] - '0' = 10 * 0 + 54 - 48 = 6
s = 10 * s + p[0][1] - '0' = 10 * 6 + 51 - 48 = 63
s = 10 * s + p[1][0] - '0' = 10 * 63 + 56 - 48 = 638
s = 10 * s + p[1][1] - '0' = 10 * 638 + 53 - 48 = 6385
PS:重新编辑是因为变成了斜体,看着不方便