首页 > 代码库 > C/C++基础笔试题1.1.1(运算符十问)

C/C++基础笔试题1.1.1(运算符十问)

本文似乎都是问题,意在引起思考,回忆,主题是运算符,另外这些问题是没有特别的逻辑上的关系,只是我想到的就问了,虽然是随便问,但是你能不能随便答呢?。

运算符,我们在每一个程序中都会用到,也是最最基础的基本功,本系列C/C++基础笔试题等,是没有纲要,没有规律的一系列博文。

为什么这样子,因为作者是渣阿,他只能学一点说一点,力求通俗阿,傻瓜但不失主线阿。

1.0写的是字节对齐,没看过有兴趣的朋友可以戳这里。1.1写的是与运算符相关的内容,你最“熟悉”的“朋友”。

首先,我想先问大家几个问题?

1.你脑海中的运算符有哪些,按优先级排个序?

2.malloc/free 和 new/delete的区别?(我没有跑题!)

3.让你来写一个重载函数++i,i++,你怎么写?

来到这里,可能你还是喜欢读程序吧。

4.来看个程序

#include<iostream>
using namespace std;

int main(){
    int x=3;
    cout<<x+x%2==1<<endl;
     return 0;
}

看看这个程序输出结果跟你想的一样不一样?被坑了吗?

5.再来看一个?跟你想的又一样不一样?

#include<iostream>
using namespace std;
int main(){
    int x=3;
    cout<<((x+x%2)==1)<<endl;
    cout<<(x+(x%2==1))<<endl;

return 0;
}
如果你一直错, 或者基本错的话,那么,你就跟我一样悲剧了。另外,这些题目在哪里来的?其实是我在刷ACM的时候犯的一些小错。放这种题目,其实,我只是想引出优先级。

6.来个难一点的,感觉一下逗号和括号的恶心?

#include<iostream>
using namespace std;

void fun0(int x,int y ,int z){
  cout<<x<<" "<<y<<" "<<z<<endl;
  int a=2,b=3,c=7;
  x=a*b,c;
  y=(a*b+z,z=c);
  cout<<x<<" "<<y<<" "<<z<<endl;
}
void fun1(int x,int y,int z){
  cout<<x<<" "<<y<<" "<<z<<endl;
  int a=2,b=3,c=7;
  y=(x=a+b+z),(z=b+c);
  cout<<x<<" "<<y<<" "<<z<<endl;
}
void fun2(int x,int y,int z){
  cout<<x<<" "<<y<<" "<<z<<endl;
  int a=2,b=3,c=7;
  y=((x=a+b+z),(z=b+c));
  cout<<x<<" "<<y<<" "<<z<<endl;
}
int main(){
    int x,y,z;
    fun0(x,y,z);
    fun1(x,y,z);
    fun2(x,y,z);
}
现在想想,还是做前面几个题目比较和谐。

为了和谐,我还是问一些YES OR NO的问题?

7.我们用%来做余运算,%只能应用于正整数对吗?

8.域运算符::我们常常用到,请问::可以重载吗?

9.运算符重载作为非成员函数重载时必须定义为友元函数?

10. 运算符必须是符号吗?(即只能是+,-,*,/,::之类的吗?)

如果你觉得我问的问题很无理取闹的话,额,的确是的,如果你对细节不追求,是很无理取闹的。(其实是你对基础功不追求)

对于上述十个问题,你有想法可以在评论中提出,好让其他朋友看到一起探究。

至于所谓的解释和标准答案,我会在1.1.2中提到,而1.1.2什么时候出来呢?估计明天或者后天吧?因为我在实习,需求改了,所以很烦呢!哎...暂时确定不下来。