标签:c++笔试题
今晚刷了一大堆的笔试题,中规中矩,但是有两道做得很快但是都错了的题目,印象深刻。
(要找工作的大四渣有没有共鸣,在学校明明很努力,但是总是跟不上时代,没有厉害的项目,也没有过人的竞赛成绩,内推屡屡失败,前天阿里巴巴在线笔试也被虐死,真心迷惘,唯独刷题搞笔试了。)
第一道题是关于宏定义的。
#include<iostream> using namespace std; #define fun(n) (n-1)*n int main() { int x=3; cout<<fun(x+3+4)<<endl; return 0; } /* A. 90 B. 34 C. 6 D. 编译出错 */
马上就错了!正确的姿势是: (3+3+4-1)*3+3+4,这个真心觉得自己无知,无知,无知!也是个最好的错误示范,千万不要乱用宏,括号还是要打的。
另外一道题是运算符的,我还专门写过运算符的文章(虽然写的很挫...)
#include<iostream> using namespace std; int main() { int a=0,b=4,c; ++a||b++; c=a+b; cout<<a<<","<<b<<","<<c<<endl; return 0; } /* A.1,5,6 B.0,4,4 C.1,4,5 D.编译出错 */
当时我瞬间就选了A了,马上就X了,瞬间就觉悟到自己的脑残了。
因为 ++a后,a转换为1,为真值,++a||b++为真,不执行b++。最后的结果就是1,4,5。
丧心病狂的题目(我自己加的,如果真实中这么编程,估计被骂死。)
#include<iostream> using namespace std; void fun(int a,int b,int c){ ++a||b++; c=a+b; cout<<a<<" "<<b<<" "<<c<<endl; } int main() { fun(0,4,0); fun(-1,4,0); fun(-2,4,0); fun(1LL<<32,4,0); fun(1LL<<32-1,4,0); }不要问我答案什么,我不会告诉你答案是
1 4 5
0 5 5
-1 4 3
1 4 5
-2147483647 4 -2147483643
绝不,哼╭(╯^╰)╮。
标签:c++笔试题
原文地址:http://blog.csdn.net/dengyaolongacmblog/article/details/38964793