任何人都可以解释此代码如何执行?

kum*_*ity -1 c

任何人都可以解释我为什么我得到的输出是64,而不是4?

#include <stdio.h>
#define square(m) m*m
int main()
 {
  int i;
  i=64/square(4);
  printf("%d",i);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*mer 5

假设您是C预处理器,然后填写define会执行的操作:

int main() {
    int i;
    i = 64 / 4 * 4;
    printf("%d",i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,按操作顺序检查答案。

64 / 4 = 16
16 * 4 = 64
Run Code Online (Sandbox Code Playgroud)