首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

IT公司面试题收集整理-C相干-(++与-没你想的那么简单)

2013-03-10 
IT公司面试题收集整理---C相关---(++与--没你想的那么简单)直接上代码#includestdio.hint main(){int i,

IT公司面试题收集整理---C相关---(++与--没你想的那么简单)

直接上代码

#include<stdio.h>int main(){int i,j=3;i=j++*++j+j--*--j;printf("%d %d",i,j);return 0;}

结果是什么?

1.3*5+5*3?

2.从右往左2*2+2*2?

等等,你可能还有一系列的想法。

结果是25

单单输出j++*++j是16,那么你想明白了么4*4?

难道是4*4+4*4?

还是不对。你有没有想过,你算出的4*4是在先算++的情况下算的,那么我请问,既然++优先级比*与+都大,那么--为什么不同样计算呢?

经过思索再三,我找到这篇帖子http://blog.csdn.net/wang6279026/article/details/8646454里面的优先级什么的都很清楚。

首先*与+优先级最低,所以计算机不会算的。

所以要先算出j++,那么就是4*4+3*3=25也就是说,先把所有的j的值给算出来,然后在进行正常的数值运算。这样就可以了。

大家很容易就犯一个错误,就是非得按照从小到达学习的计算法则,记住,计算机不是人,没有那么多规则,他的规则很简单,怎么节省CPU怎么来。

其实我倒是觉得研究这个很有意思,但是觉得用处不大。不过,要的就是这个乐趣吧。呵呵

谢谢你看我啰嗦到最后。

热点排行