首页 » 随口说 » 正文

如何智商和情商并用学习编程

这天,群里有个学员提了一个问题,我扫了一眼,本没想解答,心太累,智商捉急。

后来不知道为啥觉得还有点代表性和共性,遂整理到博客中,希望供大家参考。

题目是这样的:

int a = 3, b;
b = (a++)+(++a)+(a++)*2+a+(++a);

答案是31 ,关键要问的问题是 为什么是31

    看到这种问题我就想到了 幼儿园的一个题目:小青有10只苹果,小庆有8只梨子,请问小青把2只苹果换小庆3只梨子,此时两人各有几只梨子和苹果。(心好累)

好吧,一般c/c++基础深厚的同学也有可能算错或者搞混(这里咱不带直接拷贝到程序里计算的哦~~~)

这里首先要搞清两个概念

a++和++a  一个是后加,一个是先加 。

神马叫后加?

a=1,b=a++,  运算结束后b=1,a=2   

那么先加呢?

a=1,b=++a   运算结束后b=2,a=2   

这里有个共同点,不管先加还是后加,a的值一定会+1.

然后我们再看上面的问题,我们会发现就算搞懂了先加和后加的概念,tmd好像还是不知道上面的31是几加几得来的。

 ww

那么我们就要换种思路来解决?

1、人脑比较智能,看到上面的表达式,会从左到右分别加。就是因为太智能会导致混乱,到最后很容易因为掌握了概念反而算错

2、电脑别看能算很牛的表达式,但其实它就是个SB。电脑看到上面的公式首先是分解,根据表达式分解为5个公式

   1)b=a++;   //此时的b 是 3
 
   2)b=++a;  //此时的b 是 5
 
   3)b=(a++)*2; //此时的b 是 10

   4)b=a; //此时的b 是 6

   5)b=++a;  //此时的b 是7

 最后的结果就是3+5+5*2+6+7

总结下:

 1、基本概念还是要清楚

 2、能连着把“为什么”说清楚的人 靠的是智商

 3、如果大家像我的智商那么捉急,那么不妨用用情商,把表达式分解为5步。就能知道为什么

 4、说实话我一眼看到这个表达式,一开始我是算错的,尽管我知道先加和后加的概念。

 5、有时候做个程序员,有的人靠的是智商,很牛逼。但是有的人可以智商和情商并用,互相弥补不足,也是一种处世之道。

发表评论