You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

if语句与后自增作业疑问:为何未得到预期结果?

问题拆解:为什么代码输出是4而不是2?

别担心,这绝对是新手刚接触条件语句时超容易踩的坑!咱们把你的代码拆开来,逐行捋执行过程就一目了然了~

首先先把你的代码格式化,更清晰地展示结构:

int i = 0; 
if (i == 0) 
    i++; 
i++; 
if (i == 3) 
    i += 2; 
i += 2; 
Console.WriteLine(i);

核心问题:if语句的代码块范围

在C#(以及很多类似语法的语言)里,如果if关键字后面没有用大括号{}包裹代码,那么只有紧跟在if后面的那一行代码属于条件成立时才会执行的内容,其余不在大括号里的代码,不管if的条件是否满足,都会按顺序执行。

逐行执行流程

咱们一步步算i的变化:

  • 初始状态:i = 0
  • 第一个if (i == 0):条件成立,执行紧跟的i++,此时i = 1
  • 注意!这里的第二个i++不在if的代码块里,不管条件怎么样都会执行,所以执行后i = 2
  • 接下来if (i == 3):此时i是2,条件不成立,所以跳过紧跟的i += 2
  • 但是最后这个i += 2同样不在if的代码块里,必须执行,所以i = 2 + 2 = 4
  • 最后执行Console.WriteLine(i),输出就是4

如果你想得到预期的2该怎么改?

如果希望if条件满足时,连续执行多行代码,一定要用大括号把这些代码包裹起来,比如:

int i = 0; 
if (i == 0) {
    i++; 
    i++; 
}
if (i == 3) {
    i += 2; 
    i += 2; 
}
Console.WriteLine(i);

这样执行的话,第一个if块里的两行i++都会在条件成立时执行,i变成2;第二个if条件不成立,里面的代码都不会执行,最后输出就是2啦~

内容的提问来源于stack exchange,提问作者littlerobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:33:56