锁定老帖子 主题:收集各种诡异的笔试面试题(不断更新)
精华帖 (2) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-10-08
最后修改:2010-10-08
看回复就发现很多人不应该做程序员,应该去做粪青。屁都不懂就知道武断。
ps:这类题玩得太多也没有意思,你还可以找些更诡异的拿来问面试官。 |
|
返回顶楼 | |
发表时间:2010-10-08
最后修改:2010-10-08
#include <iostream> int main(void){ int j = 0; j = j++; std::cout<<j<<std::endl; return 0; } ------------------------------------ 0 Terminated with return code 0 Press any key to continue ... |
|
返回顶楼 | |
发表时间:2010-10-08
polaris1119 写道 icefishc 写道 c++的事还真不能靠试。。。 在c++这个应该是undefined behavior undefined behavior?从何体现?编译不通过? undefined behavior的意思就是 它的结果不确定,也许取决于你用的编译器也许取决于你的优化参数或其他外部条件。 你所看到的结果只是一种可能。 |
|
返回顶楼 | |
发表时间:2010-10-08
yangguo 写道 看回复就发现很多人不应该做程序员,应该去做粪青。屁都不懂就知道武断。
ps:这类题玩得太多也没有意思,你还可以找些更诡异的拿来问面试官。 的确,这种题也就是一些无聊的面试官会出,他们碰巧知道这个,然后就想刁难你。其实没啥意思。不过为了应付面试又得了解点。 |
|
返回顶楼 | |
发表时间:2010-10-08
Crusader 写道 #include <iostream> int main(void){ int j = 0; j = j++; std::cout<<j<<std::endl; return 0; } ------------------------------------ 0 Terminated with return code 0 Press any key to continue ... 请问用的啥编译器?我用Visual Studio 2008测试结果不是这样的。是1 |
|
返回顶楼 | |
发表时间:2010-10-08
icefishc 写道 polaris1119 写道 icefishc 写道 c++的事还真不能靠试。。。 在c++这个应该是undefined behavior undefined behavior?从何体现?编译不通过? undefined behavior的意思就是 它的结果不确定,也许取决于你用的编译器也许取决于你的优化参数或其他外部条件。 你所看到的结果只是一种可能。 你说的有道理,这个结果的确跟编译器有关,而C++编译器又有不同的实现,因而可能结果真的不一样。我用VS测试结果是1。 |
|
返回顶楼 | |
发表时间:2010-10-08
最后修改:2010-10-08
1
GCC 4.4.1 这种题确实没啥意义, 真面这样的题,你就问他要是我写出类似于i=(++i)+(i++)的代码, 领导还不把我给开了 |
|
返回顶楼 | |
发表时间:2010-10-08
最后修改:2010-10-08
cch123 写道 1
GCC 4.4.1 这种题确实没啥意义, 真面这样的题,你就问他要是我写出类似于i=(++i)+(i++)的代码, 领导还不把我给开了 虽然这么写是错的, 但题还是有意义的。这些都属于基础知识。 如果答不出来那怎么知道为什么不这么写。 |
|
返回顶楼 | |
发表时间:2010-10-08
polaris1119 写道 Crusader 写道 #include <iostream> int main(void){ int j = 0; j = j++; std::cout<<j<<std::endl; return 0; } ------------------------------------ 0 Terminated with return code 0 Press any key to continue ... 请问用的啥编译器?我用Visual Studio 2008测试结果不是这样的。是1 MinGW,个人认为前后缀++实现如下: ++x → (x+=1) x++ → (temp=x, x+=1, temp) 注意逗号表达式 |
|
返回顶楼 | |
发表时间:2010-10-09
即JAVA先将i的值保存到临时内存空间中,然后处理++,即原来的j加1
---------------------------------- 应该是先将j的值保存到临时内存空间中吧。 |
|
返回顶楼 | |