# define ONE 1
# define TWO 2
# define THREE 3
# define FOUR 4
# define FIVE 5
# define SIX 6
# define SEVEN 7
# define EIGHT 8
# define NINE 9
# define TEN 10
# define ELEVEN 11
# define TWELVE 12
# define THIRTEEN 13
# define FOURTEEN 14
# define FIFTEEN 15
# define SIXTEEN 16
# define SEVENTEEN 17
# define EIGHTEEN 18
# define NINETEEN 19
# define TWENTY 20+
# define THIRTY 30+
# define FORTY 40+
# define FIFTY 50+
# define SIXTY 60+
# define SEVENTY 70+
# define EIGHTY 80+
# define NINETY 90+
# define HUNDRED *100
# define THOUSAND *1000
# include <stdio.h>
main(){
printf("%d",THIRTY THREE + SEVEN); /* 40 */
}
補足
THIRTY + ONE
と書いた場合は、(31)+ (+ 1)
のように二項演算子と単項演算子に解釈される仕組みです。というわけで乗除はエラーになります。
ONE + THIRTY
も(1) + (31)+
と解釈されるためエラーです。