沧海雨季 发表于 2017-9-5 20:07:58

c语言的预处理

这个为什么输出后只有三个值,不应该从1^2输出到5^2吗?不知道问题出在哪里了,麻烦大家帮我看看,谢谢!

#include <stdio.h>

#define SQ(y) ((y)*(y))

int main()
{
        int i=1,sq;

        while(i<=5)
        {
                sq = SQ(i++);
                printf("%d\n",sq);
        }

        return 0;
}

ba21 发表于 2017-9-5 20:33:54







沧海雨季 发表于 2017-9-5 22:20:41

ba21 发表于 2017-9-5 20:33


是不是 (i++)*(i++) 结束之后,i会加两遍?

ba21 发表于 2017-9-5 22:26:33

沧海雨季 发表于 2017-9-5 22:20
是不是 (i++)*(i++) 结束之后,i会加两遍?

是的

沧海雨季 发表于 2017-9-5 22:28:16

ba21 发表于 2017-9-5 22:26
是的

谢谢啦
页: [1]
查看完整版本: c语言的预处理