推荐答案
测试一下
题目
#include <stdio>
A 1,3 B 0,2 C 0,3 D 1,2
参考答案与知识点
参考答案
D。程序输出结果为1,2。
解析:
1. 初始a=-2,b=0。进入while循环,条件为a++ && ++b。
2. 第一次判断:a++先取a的当前值-2(非0视为真),然后a自增为-1。由于左边为真,计算右边++b:b先自增为1,取值为1(真)。逻辑与结果为真,执行空循环体。此时a=-1,b=1。
3. 第二次判断:a++取-1(真),a变为0;++b取2(真),b变为2。结果为真,执行空循环体。此时a=0,b=2。
4. 第三次判断:a++取0(假),a变为1。左边为假,逻辑与短路,不再计算++b,b保持2。条件为假,循环结束。
5. 循环结束后a=1,b=2。printf输出"1,2"。
注意:while后有分号表示空循环体,循环条件每次判断都会执行a++和++b(除非短路)。易错点:混淆a++与++a的取值顺序,忽略逻辑与的短路规则。
涉及知识点
- 自增运算符前缀与后缀区别
- 逻辑与(&&)的短路特性
- while循环执行流程
- C语言非零即真的逻辑判断
- 空循环体的书写与理解