为什么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:50 编辑
跟编译器有关系吧,我用的Dec也是22。https://zhidao.baidu.com/question/18961124.html 本帖最后由 心驰神往 于 2021-1-12 16:50 编辑
我傻了 心驰神往 发表于 2021-1-12 16:39
跟编译器有关系吧,我用的Dec也是22。https://zhidao.baidu.com/question/18961124.html
不是6+7+8吗怎就变成7+7+8了? 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]