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

C++新手疑问:getResult(2,5)中if-else分支匹配规则解析

嵌套if-else的执行逻辑解析

先看你给出的代码,调用getResult(2,5)时的执行流程,核心要搞清楚C++里else的绑定规则:else永远和最近的、未被配对的if绑定,和代码缩进无关。

代码执行步骤(调用getResult(2,5))

  1. 传入参数m=2,n=5,进入函数。
  2. 先判断外层条件m < n:2<5成立,进入内层的if判断。
  3. 内层判断n <=10:5<=10成立,执行ans = m + n,也就是ans=2+5=7。
  4. 内层if的条件成立,所以它对应的else(ans = m * n)不会执行;外层if的条件已经成立,所以外层的else(ans = n/m)也完全不会触发。

关于你的困惑

你提到的第二个else,是属于内层的if(n<=10)的,不是外层if的分支:

  • 只有当内层if条件不成立(也就是n>10)时,才会执行这个else的ans=m*n;
  • 外层的else,只有当外层if条件m <n不成立(比如m>=n)时,才会执行ans=n/m。

建议:用花括号明确代码块

原代码的缩进容易误导人,建议给if/else加上花括号,让结构一目了然:

int getResult(int m, int n)
{
  int ans;

  if (m < n) {
    if (n <= 10)    
      ans = m + n;
    else
      ans = m * n;
  } else {
    ans = n / m;
  }

  return ans;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:31:02