请给位高手帮忙讲解一下C语言中的自加运算是怎么算的

发布时间:2024-05-17 01:00 发布:上海旅游网

问题描述:

#include<stdio.h>
void main()
{
int k,i=3;
k=(i++)+(i++)+(++i);
printf("%d,%d\n",k,i);
}
为什么结果会是12,6
而不是13,6

问题解答:

这个结果是 10 6
如果是 k=(i++)+(++i)+(i++); 这样写 结果是 12 6
因为 ++ 在右侧时,变量先参与运算再增1,在左侧时,变量先增1再参与运算。
k = (i++)+(++i)+(i++) 系统是这么算的。
先计算 (i++)+(++i) ,第一个i++,取i参与运算,再取另一个加数,
i++,时,先增1再参与运算,i变成了 4
k= i + i = 4 + 4 =8

再取+(i++)参与运算再增1 8+4 =12

我在TC和dev-c++上运行了,这个答案是在TC上的结果了,我在dev-c++上的结果是10,6对于这种连加或连减的操作来说,个人建议不用。因为不同的编译器对他的运算规则不同。我也试图去总结一下各个编译器对他们的运算规则,但是太麻烦了,我试图将他们的顺序调整,增加一些i++或++i什么的项来看结果,但是真的看不出有什么规律,只有看有没有编译器说明书是怎么说的了,在这我只是给你一个建议,在这种情况下愿意多写几个变量什么的,千万不要用你上面这种方法。

我怎么感觉应该是3+3+4=10 啊

这跟编译器有关。
在linux上gcc结果为10,6。

热点新闻