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

如何仅用单个if语句等价改写给定的C++多分支判断代码

实现思路

原代码的分支逻辑本质是对无符号整数x做分段映射:

  • x∈[0,1] → y=1
  • x∈[2,3] → y=2
  • x∈[4,5] → y=3
  • x≥6 → y=6
    由于x是无符号类型,原判断中的x>=0是恒成立的冗余条件,可以直接省略。我们可以利用无符号整数的整除特性,仅用单个if语句实现完全等价的逻辑。

等价代码

unsigned int x, y;
cin >> x;
if (x < 6) {
    y = x / 2 + 1;
} else {
    y = 6;
}

如果更看重可读性不想用整除计算,也可以用查找表实现:

unsigned int x, y;
cin >> x;
const unsigned int value_map[] = {1,1,2,2,3,3};
if (x < sizeof(value_map)/sizeof(value_map[0])) {
    y = value_map[x];
} else {
    y = 6;
}

逻辑验证

  • x取0或1时,整除2结果为0,y=0+1=1,符合原逻辑
  • x取2或3时,整除2结果为1,y=1+1=2,符合原逻辑
  • x取4或5时,整除2结果为2,y=2+1=3,符合原逻辑
  • x≥6时走else分支赋值6,符合原逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:06:05