123456qw 发表于 2021-1-12 16:35:39

为什么q的结果多加1变成了22

#include <stdio.h>
void main()
{

        int i=5,j=5,p,q;
        p=(i++)+(i++)+(i++);
        printf("%d\n",i);
        q=(++j)+(++j)+(++j);
        printf("%d\n%d\n%d\n%d\n",p,q,i,j);
}

心驰神往 发表于 2021-1-12 16:39:27

本帖最后由 心驰神往 于 2021-1-12 16:50 编辑

跟编译器有关系吧,我用的Dec也是22。https://zhidao.baidu.com/question/18961124.html

心驰神往 发表于 2021-1-12 16:46:54

本帖最后由 心驰神往 于 2021-1-12 16:50 编辑



我傻了

123456qw 发表于 2021-1-12 16:56:57

心驰神往 发表于 2021-1-12 16:39
跟编译器有关系吧,我用的Dec也是22。https://zhidao.baidu.com/question/18961124.html

不是6+7+8吗怎就变成7+7+8了?

心驰神往 发表于 2021-1-12 16:59:54

123456qw 发表于 2021-1-12 16:56
不是6+7+8吗怎就变成7+7+8了?

不同的编译器结果不一bai样。后++和前++的不同在于du前++是左值zhi,加完一返回一个变量,而后++是右值,是将数先赋给一临时变量,然后数加1,再把临时变量返给表达式。但是编译器可能把3个前++先做完也有可能顺次做(就是做完一个再做+再做++再做+……),而3个后++同样有可能顺次做,或者是3个+做完了再集体做++,因此结果因不同编译器的实现而定。 引自https://zhidao.baidu.com/question/18961124.html。还有的编译器是24
页: [1]
查看完整版本: 为什么q的结果多加1变成了22