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