这个怎么运算的,结果为什么是6,20

img


#include "stdio.h"
#define SQ(s) s*s
void main(){
    int i=2;
    while(i<=5)
        printf("%5d",SQ(i++));
}

img

主要是宏定义的问题
SQ(i++)相当于 i++i++的意思
i++是先用i运算,再i加1,按说应该是相当于i
i,然后i=i+1,i=i+1,最后输出4 和 16啊。你是什么编译器啊