I looked at the link you provided. After carefully observing the code, I came to the following conclusion.
int r, countIt(int n) {.....}
int r;
int countIt(int n){.....}
while (r += " 2 "[n % 10] & 3, n /= 10);
:
do{
r += " 2 "[n % 10] & 3;
n/=10;
}while(n);
r += " 2 "[n % 10] & 3;
.
cout<<"abcde"[2];
c
, ,
- :
r += " 2 "[n % 10] & 3;
- ,
r += "TAB,SPACE,SPACE,SPACE,SPACE,SPACE,TAB,SPACE,2,TAB"[n % 10] & 3;
, .
ASCII TAB 9, 1001.
ASCII SPACE 32, 100000.
TAB 3
1001 & 0011 = 0001 which is 1
SPACE 3
100000 & 000011 = 000000 which is 0
TAB 1 SPACE 0, ,
do{
r += "1000001021"[n % 10] & 3;
n/=10;
}while(n);
n% 10 - n. , , r.