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

admin2013-02-27  25

问题 有以下程序段,其输出的结果是(    )。    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

答案4

解析 本题考查自增运算符和逻辑运算符两个知识点。错误解答: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。
转载请注明原文地址:https://kaotiyun.com/show/HOVp777K
0

最新回复(0)