您的位置:首页 > 编程语言 > C语言/C++

告诉我图样图森破的两道简单C++笔试题

2014-08-31 22:55 197 查看
今晚刷了一大堆的笔试题,中规中矩,但是有两道做得很快但是都错了的题目,印象深刻。

(要找工作的大四渣有没有共鸣,在学校明明很努力,但是总是跟不上时代,没有厉害的项目,也没有过人的竞赛成绩,内推屡屡失败,前天阿里巴巴在线笔试也被虐死,真心迷惘,唯独刷题搞笔试了。)

第一道题是关于宏定义的。

#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++笔试题