我认为是答案错了。
我才学习c语言,看到个题目:int i=5,k;
k=(++i)+(++i)+(i++);
printf(%d,%d,k,i);
我计算出的是k=6+7+7=20,i=8
可是答案k=21。
大家说说看啊!
谢谢!
可能我让大家笑话了,哎~~谁叫我是新手啊。。。
为什么是两次自增
应该是8+8+5=21,i=8
int i=5,k;
通过三次自加i=5+1+1+1=8,
++i的值在i自加之后再运算所得的值,也就是8
i++的值是i自加之前运算所得的值,也就是5
k=(++i)+(++i)+(i++)
=8+8+5=21
i 先做两次自增为7 3个7是21 然后再做一次自增为8
同意...应该是这样吧...
i 先做两次自增为7 3个7是21 然后再做一次自增为8
您的意思是i在计算前,把这条语句里可能涉及到它改变的地方都计算了一遍,然后再开始真正运算这条语句吗?!
<SCRIPT language=javascript type=text/javascript>
document.write (astro(''));
</script>
答案没错,是算符的优先级的问题.