首页 > 代码库 > 告诉我图样图森破的两道简单C++笔试题
告诉我图样图森破的两道简单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=10 ,9*10=90,果断A。
马上就错了!正确的姿势是: (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++笔试题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。