赋值语句 程序员面试宝典(1)
来源:互联网 发布:阿里云服务器上传代码 编辑:程序博客网 时间:2024/05/20 17:27
准备花三个月左右的时间把程序员宝典看一遍。
面试例题1: Whatdoes the following program print?
#include <iostream>
Using namespacestd;
Int main()
{
Intx=2,y,z;
X*=(y=z=5);cout<<x<<endl;
Z=3;
X==(y=z);cout<<x<<endl;
X=(y==z);cout<<x<<endl;
X=(y&z);cout<<x<<endl;
X=(y&&z);cout<<x<<endl;
Y=4;
X=(y|z);cout<<x<<endl;
X=(y||z);cout<<x<<endl;
Return 0;
}
解析: X*=(y=z=5);将5赋值给z,z赋值给y,然后将x=x*y; 则 x=2*5=10;
X==(y=z); cout<<x<<endl; 将z赋值给y,然后再判断x是否和y相等,不论等不等都不改变x的值,x=10
X=(y==z); cout<<x<<endl;因为y此时等于z所以x=1;
X=(y&z); cout<<x<<endl; y和z都是3,011,两个011&011 按位与,则不变仍为011 则x=3
X=(y&&z);cout<<x<<endl; 判断y和z是否为真,此时y和z都是3 故y&&z==1则x=1
Y=4;
X=(y|z); cout<<x<<endl; 将y和z按位或,y=100z=011 则y|z=111=7 则x=7
X=(y||z); cout<<x<<endl; y和z有一个为真就为真则x=1;
综上: 输出的结果是 10 10 1 3 1 7 1
面试题2: whatdoes the following program print?
#include <iostream>
Using namespace std;
Int Vac=3;
Int main()
{
Int Vac=10;
::Vac++;
Cout<<::Vac<<endl;
Cout<<Vac<<endl;
Return 0;
}
4 10
What will be the output of the followingcode(assume the necessary include files are present)?
Int i=3,j=4;
i?i++:++j;
printf(“%d %d\n”,i,j);
4,4
面试题4: 一下的代码输出什么?
Int i=1,j=2;
Int k=i+++j;
Cout<<k<<endl;
解析: i+++j首先结合i++,然后再+j,但是i++是事后计算的,
也就是说首先计算i+j然后i++;所以k的和为1+2=3;然后i才自增到2,所以结果为3
如果是intk=++i+j;则i先自增,然后再加上j。结果为4
面试题5:x=x+1,x+=1,x++,哪个效率高? 为什么?
解析: x=x+1效率最低,因为他的执行过程如下:
(1) 读取右x的地址
(2) X+1
(3) 读取做x的地址,编译器并不认为左右x的地址相同
(4) 将右值传递给左边的
X+=1其次,其执行过程如下
(1) 读取右x的地址
(2) X+1
(3) 将得到的值在传递给x(因为x的地址已经读出)
X+=效率最高,其执行过程
(1) 读取右x的地址
(2) X自增1
面试题6
What will be the output of the following Ccode?
#define product(x) (x*x)
Int main()
{
Inti=3,j,k;
J=product(i++);
K=project(++i);
Printf(“j=%d,k=%d”,j,k);
Return 0;
}
解析:project(i++)=i++*i++; i=3 所以j=9,但是i已经累计到了5了。
Project(++i)=++i*++i,要求先累加i然后再相乘,所以此时i=7,49;
面试题 7
If there are “int a=5,b=3;”, The value of aand b are ___ and ___ after execute “!a&&b++”.
解析:因为!a为假,所以!a&&b++为假,!a后面的运算都不计算了。所以a=5 b=3- 赋值语句 程序员面试宝典(1)
- 程序员面试宝典-1
- 程序员面试宝典1
- 程序员面试宝典摘记1
- 程序员面试宝典摘记1
- 程序员面试宝典 程序代码1
- 程序员面试宝典总结1
- 程序员面试宝典-学习1
- <<程序员面试宝典>>读书笔记 1
- java程序员面试宝典1
- 6.c/c++程序员面试宝典-条件语句
- 7.c/c++程序员面试宝典-循环语句
- 8.c/c++程序员面试宝典-switch语句
- 不用判断语句找最大数--程序员面试宝典
- 程序员面试宝典笔记1--基础知识
- 【程序员面试宝典】数据结构基础1:链表
- 《程序员面试宝典》一些笔记(1)
- 程序员面试宝典 第1-8章
- OfficeTypes
- jquery判断过长的标题用省略号代替
- php敏感词过滤
- 根据xsd生成xml文档的c#实现(转)
- New URI()可以自动处理Encode后的URL String
- 赋值语句 程序员面试宝典(1)
- java保留两位小数
- Linux IPC的一个系列的文章
- 查询Ip、身份证、手机所在地代码
- 新手上路第一天————菜鸟的心得之单链表
- javascript:history.go()和History.back()的区别收藏
- Linux下分割与合并文件的方法
- java.lang.NullPointerException at org.apache.struts.action.ActionServlet.parseModuleConfigFile(Actio
- 1、ubuntu基本操作 - ssh的使用