下面程序的输出结果如何:
[C++] 纯文本查看 复制代码 #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;
return 0;
}
运行输出:在 x *= (y = z = 5); 这个语句中,5 赋值给 z ,z 再赋值给 y,然后有 x = x*y; ,所以 x 为 2*5 = 10 。
在 x == (y = z); 这个语句中,== 符号不是赋值运算符,它只判断左右两边的值是否相等,但不管相等与否,都并不会 x 的值,所以 x 的值仍然为 10 。
在 x = (y == z); 这个语句中,y == z 的结果要么是 1 要么是 0,所以 x 的结果要么是 1 要么为 0 。因为上面的赋值语句已经令 y 等于 z ,所以这里 x 的值为 1 。
在 x = (y & z); 这个语句中,y 和 z 做按位与运算,且因为 y 和 z 的值都为 3,所以 x 的值也为 3 。
在 x = (y && z); 这个语句中,只要 y 和 z 同时不为零,那么 x 就为 1,否则 x 为 0 。
在 x = (y | z); 这个语句中,y 和 z 做按位或运算,此时 y 为 4,z 为 3,所以运算后的结果为 7 。
在 x = (y || z); 这个语句中,只要 y 或 z 不为 0 ,那么 x 为 1 。 |