SwaggerYang 发表于 2019-12-21 15:31:16

求助原因,口算和机算结果不一样

#include <stdio.h>
int main(){
        int i=5;
        int j=5;
        int p,q;
        p=(i++)+(i++)+(i++);
        q=(++j)+(++j)+(++j);
        printf("%d,%d",p,q);
        return 0;
       
}

这里的q口算是21,为什么机器算出来是22呢?求大佬解答

hrp 发表于 2019-12-21 23:30:17

本帖最后由 hrp 于 2019-12-21 23:38 编辑

// 算第一个括号时:
//6      6       6
q = j + (++j) + (++j);

// 算第二个括号时:
//7   7      7
q = j + j + (++j);

// 前两项相加时:
//          7
q = 14 + (++j);

// 算第三个括号时:
//       8
q = 14 + j;

// 结果:
q = 14 + 8;
页: [1]
查看完整版本: 求助原因,口算和机算结果不一样