首页 > 代码库 > 告诉我图样图森破的两道简单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++笔试题