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++