首页 > 解决方案 > C 由于预增导致的错误输出

问题描述

下面是一个简单的 C 程序。源代码:

    #include<stdio.h>
    #define PRODUCT(x) ((x)*(x))
    int main()
    {
        int i = 3, j, k , l;
        j = PRODUCT(i+1);
        k = PRODUCT(i++);
        l = PRODUCT(++i);
        
    
        printf("\n%d %d %d %d",i , j, k , l);
        return 0;
    }

等效处理[预处理后]
注意:这只是整个 .i 文件的片段

输出 :

7 16 12 49


问题:为什么我打印的是 49 ,不是 42 吗?

标签: c

解决方案


推荐阅读