k=(++i)+(++i)+(++i)

来源:百度知道 编辑:UC知道 时间:2024/05/13 08:04:10
i=3 k=(++i)+(++i)+(++i)运行后的值是多少
的值是多少呢?

答案应该是:16

编程如下:

#include <stdio.h>
void main(void)
{
int i=3;
int k=(++i)+(++i)+(++i);
printf("%d\n",k);
}

其实可以好好的跟踪一下变量在内存的变化,挺有意思的!!!

这个的问题没有什么意义,因为在VC6编译下,结果为16,TC,BCC下编译,结果为18;

这个被称为表达式的副作用,因为在一个表达式的求值中,求值的顺序因为编译技术的差异没有一个标准,所以不同的编译器会形成不同的结果,比如BORLAND系列的编译器,是这样计算的,先计算所有的++i,作后相加成了18,而VC呢,先计算前两次++i,再逐个加上后面的,就有了16了.

编程的时候要尽量避免这样的副作用,也就是在一个式子中对一个值执行两次以上的改变值的操作

上面的兄弟都说错了啊 !!!!!!!!!!应该是15。
++i就相当于i=i+1。这是肯定的。我学过C语言的。
再来看这兄弟提出来的题目。++i和i++是不同的,前者会先把i算加法。而后者是相反的。
比如 i=3 k=(++i)+(++i)+(++i),先看括号里的 ,第一个(++i)应该是等于4。而根据i=i+1。所以后面算第二个(++i)的时候i已经变成4,所以第二个(++i)应该等于5。依次类推。最后一个(++i)就是6,所以最后的结果是K=4+5+6=15。

答案是16,我运行过了

无聊的问题

l