1.赋值语句

想找一些有解析的笔试常见题型做练习,因为我始终认为没有解析的题没有一点做的必要,完全是耽误时间,找了半天发现有详细解析的并不多……找到这个程序员面试宝典,准备系统的看一下,一题一篇博客吧。今天第一题:

程序代码如下:

#include <iostream>
using namespace std;
int main()
{
	int x = 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;
	system("pause");
	return 0;
}

分析:

x *= (y = z = 5);

这一句的意思是说将5赋值给z,再将z的值赋给y,然后将x与y的值相乘赋给x,所以x的值是2*5=10。

z = 3;
x == (y = z); 

这一句的意思是将z的值赋给y,这时候x和y的值都发生改变,x和y的值都为3,然后判断x是否跟y的值相等,但是无论相等与否x的值都不发生改变,仍为10.

x = (y == z);

这句是判断y和z的值是否相等,相等则返回一个bool值1,否则返回一个bool值0,因为y和z的值都为3,所以返回1,x=1.

x = (y & z); 

将y和z进行每一位的与运算,11和11与运算之后得到11,所以x的值为3.

x = (y && z);

将y和z进行与运算,即且判断,如果x和y的值均为真,则返回1,因为y和z都是3,所以都为真,返回x=1.

y = 4;
x = (y | z);

将y和z按位或,y为100,z为11,得到111,x=7.

x = (y || z);
将y和z进行或运算,如果y和z中有一个为真,则返回1,因为y和z分别为4和3均大于0,所以均为真,返回x=1.

运行结果如下:

猜你喜欢

转载自blog.csdn.net/n1neding/article/details/80244671
1.