C语言i++和宏定义的demo

今天看到的很奇特的特性,就记下来了

代码:

#include <stdio.h>
#include <string.h>

#define SQ(y) ((y)*(y))
int main(){
    int i=1;
    while(i<=5){
        printf("%d^2 = %d\n", i, SQ(i++));
        fflush(stdout);
    }

    return 0;
}

是这样的,我一直以为第一行输出:1^2=1,一直以为i++后的值是下一次循环用的,结果没想到

右边的:SQ(i++)=((i++)*(i++))=》1*2=3
左边的:i = 3 (这个地方特别注意!!!我一直以为是1!!!没想到连续两次i++后i的值变成3了!)

 同理可得,多加一个i++

 

posted @ 2020-03-12 15:03  sunseeker  阅读(359)  评论(0编辑  收藏  举报