题目完整:逗号表达式
题目完整:
如果 m 和 n 为 int 类型变量,则执行
for (m = 0, n = 1; n < 9; )
n = ((m = 3 * n, m + 1), m - 1);
之后 n 的值为____(偶数)。
核心知识点
- 逗号表达式:
(表达式1, 表达式2, ..., 表达式k)会从左到右依次执行所有表达式,最终整个逗号表达式的值为最后一个表达式的值。 - for循环结构:
for(初始化; 条件; 增量),本题增量部分为空,循环体负责变量更新。
逐轮循环推演
| 循环轮次 | 循环开始时 m,n |
条件 n<9 |
执行 n = ((m = 3 * n, m + 1), m - 1) |
循环结束后 m,n |
|---|---|---|---|---|
| 初始值 | m=0, n=1 |
✅ 1<9 | 1. 执行 m = 3*n → m=32. 执行 m+1 → 4(无赋值)3. 执行 m-1 → 2(逗号表达式最终值)4. 赋值 n=2 |
m=3, n=2 |
| 第1轮后 | m=3, n=2 |
✅ 2<9 | 1. 执行 m = 3*n → m=62. 执行 m+1 → 7(无赋值)3. 执行 m-1 → 5(逗号表达式最终值)4. 赋值 n=5 |
m=6, n=5 |
| 第2轮后 | m=6, n=5 |
✅ 5<9 | 1. 执行 m = 3*n → m=152. 执行 m+1 → 16(无赋值)3. 执行 m-1 → 14(逗号表达式最终值)4. 赋值 n=14 |
m=15, n=14 |
| 第3轮后 | m=15, n=14 |
❌ 14≥9 | 循环终止 | m=15, n=14 |
最终结论
循环结束后,n 的值为 14(符合题目要求的偶数)。
补充说明
- 逗号表达式的执行顺序是关键:
(A, B, C)中,A、B、C依次执行,最终取C的值。本题中内层(m = 3 * n, m + 1)取m+1,外层再取m-1,因此最终赋值给n的是m-1。 - 循环终止条件为
n < 9不成立,当n=14时,条件不满足,循环结束。

浙公网安备 33010602011771号