Strange behavior of Macro-expansion
问题 Here's the code: #include <stdio.h> #include <stdio.h> #define VAL1(a,b) a*b #define VAL2(a,b) a/b #define VAL3(a,b) ++a%b int main() { int a = 1; int b = 2; int c = 3; int d = 3; int e = 5; int result = VAL2(a,d)/VAL1(e,b)+VAL3(c,d); // result = 1 //int result = a/d/e*b+++c%d; // result = 0 printf("%d\n", result); return 0; } Why aren't the results of two statements the same? 回答1: In one case you have + ++ and in the other case you have ++ + . + ++ and ++ + are different streams of tokens .