问题 单项选择题

有以下程序段,其输出的结果是( )。 int x, y, z; x = y = z = O; ++x | | ++y && ++z; cout<<x<<","<<y<<","<<z<<end1;

A.1,1,1

B.1,1,0

C.1,0,0

D.0,0,0

答案

参考答案:C

解析: 本题考查自增运算符和逻辑运算符两个知识点。错误解答:x,y,z都参 与逻辑运算++x||++y&&++z;,最后得到x=y=z=1。 在正确解答此题前,我们先来看看以下两个表达式: ①a++&&b++; ②a++||b++; 其中: ①式中,若a的值为0,表达式先去求a++的值,系统完全可以确定逻辑表达式的运算结果为0,因此跳过b++不再对它进行求值,所以a的值将自增1,由0变成1,而b值将不变。 ②式中若a值为1,表达式先去求a++的值,由于表达式a++的值为1,无论表达式 b++为何值,系统完全可以确定逻辑表达式的运算结果为1,因此也将跳过b++不再对它进行求值,所以b将保持不变。 现在我们来看题目,首先我们对++x进行计算,由于开始x值为0,所以++x的值为 1,由上述第②点可知“||”后面已不再进行运算了,也就是y,z保持原值不变。所以输出结果应为1,0,0。

单项选择题
单项选择题