We may a have a confusion of slecting && a single token or & as 2 diff token
Similarly the same thing goes for + or ++
The concept that come "MAximal match ".If you have + and may with one look ahead you have encountered ++ then in that case you will take maximal one . ie ++ so it would be considered ++ as token under relational operator token class
similarly a & is address operator and && is a logical so you take max of both of them so its &&
Now but in case of *** you cant have "all" of them as a single token . or we dont have any opearator (***) -we are extending the indirection property .There is no such token class , Infact each of * will come under one token class . SO all 3 in one token class
So the token are printf
c
"what up %id "
,
++
&&
*
*
*
a
)
;
ALl of these counts to 12 ! :)