1、题目

执行下面程序段后,y的结果是____。int x,y;x=y=2;x=x-2&&(y=y+1);printf(“%d“,y);A。3 B.2 C.1 D。0_C

2、知识点

  • 基础运算
  • 运算符的优先级顺序
  • &&短路机制

3、要做好的功课

讲之前,先看下这张表
执行下面程序段后,y的结果是____。int x,y;x=y=2;x=x-2&&(y=y+1);printf(“%d“,y);A。3 B.2 C.1 D。0_C_02

4、开始解题

执行下面程序段后,y的结果是____。int x,y;x=y=2;x=x-2&&(y=y+1);printf(“%d“,y);A。3 B.2 C.1 D。0_C_03

根据运算符的优先级顺序
执行下面程序段后,y的结果是____。int x,y;x=y=2;x=x-2&&(y=y+1);printf(“%d“,y);A。3 B.2 C.1 D。0_解题过程_04
‘-’号要比‘&&’符号优先级更高,所以先执行
执行下面程序段后,y的结果是____。int x,y;x=y=2;x=x-2&&(y=y+1);printf(“%d“,y);A。3 B.2 C.1 D。0_题型_05
那么x-2等于0
&& 的意思是说:两边都为真,才会返回真,否则为假
为此, && 有个短路机制,就是当一方为假时,另一方不再执行,因为没有意义。
所以说,当 x-2=0,执行&&的时候,发现左边为假,右边的(y=y+1)就不执行了。
所以y = 2