上了基础班一段时间我的同桌是一个喜欢上网研究怪题的人他给了我一道题int x =5;x=x+(x++)+(++x);后x的值是多少?我直接说是19他告诉我是17,我愣了一下仔细看了一下发现是17,而且很简单:计算机内部的加法器,只能让两个数相加,那么上述的式子就可以拆解成x=x+(x++)分割+(++x); 对于前半部分很好理解,x=x+x=5+5,内存中x=x+1。x=6。。后半部分++x,先增一在使用,内存中x=x+1。x=7。 最终x=5+5+7=17。这个用来坑初学者是个很好的东西,同时引发了我对编程学习的思考,我在学习编程的时候很多时候还是习惯性的按照以前数学的习惯来思考,这是不对的,应该习惯用编程的规则来看待问题,不知道有没有和我一样的初学者
|
|