题目
已知 int a = 1,b = 1, c;执行语句:c = --a && ++b;后变量a,b,c的值分别为()。A.0、1、1B.1、0、1C.0、1、0D.0、2、0
已知 int a = 1,b = 1, c;
执行语句:
c = --a && ++b;
后变量a,b,c的值分别为()。
A.0、1、1
B.1、0、1
C.0、1、0
D.0、2、0
题目解答
答案
在执行逻辑与运算符时,如果左侧的操作数为 false,则不会执行右侧的操作数,这种行为被称为逻辑运算符的短路特性。在本题中,由于 --a 的结果为 0,即 false,因此表达式的结果为 false,不会执行 ++b。因此,变量 b 的值不会被加 1,仍然是 1。变量 a 的值被减 1,变成了 0。因此,变量 a,b,c 的值分别为 0、1、0。故C选项符合题意。
故答案为C。
解析
步骤 1:理解逻辑运算符的短路特性
在执行逻辑与运算符 && 时,如果左侧的操作数为 false,则不会执行右侧的操作数,这种行为被称为逻辑运算符的短路特性。在本题中,由于 --a 的结果为 0,即 false,因此表达式的结果为 false,不会执行 ++b。
步骤 2:计算变量 a 的值
由于 --a 的结果为 0,即 false,因此变量 a 的值被减 1,变成了 0。
步骤 3:计算变量 b 的值
由于表达式的结果为 false,不会执行 ++b,因此变量 b 的值不会被加 1,仍然是 1。
步骤 4:计算变量 c 的值
由于表达式的结果为 false,因此变量 c 的值为 0。
在执行逻辑与运算符 && 时,如果左侧的操作数为 false,则不会执行右侧的操作数,这种行为被称为逻辑运算符的短路特性。在本题中,由于 --a 的结果为 0,即 false,因此表达式的结果为 false,不会执行 ++b。
步骤 2:计算变量 a 的值
由于 --a 的结果为 0,即 false,因此变量 a 的值被减 1,变成了 0。
步骤 3:计算变量 b 的值
由于表达式的结果为 false,不会执行 ++b,因此变量 b 的值不会被加 1,仍然是 1。
步骤 4:计算变量 c 的值
由于表达式的结果为 false,因此变量 c 的值为 0。